我可以覆盖/重新定义“全局”Javascript函数,如confirm()和alert()吗?

时间:2010-01-22 22:19:44

标签: javascript confirm browser-automation

我想做一些浏览器自动化,那些讨厌的确认/警告框是一个真正的痛苦。不幸的是,在这种情况下完全禁用javascript是不可取的。

好吧,所以我想知道,我可以只更改浏览器的javascript解释器所看到的那些方法的定义,基本上什么都不做并返回true?请注意,我确实知道如何直接在Javascript代码中重新定义它们,例如放入

function alert(message)
{
  return true;
}

但是AFAIK对于这种情况来说这不是一种可行的方法,因为在进行浏览器自动化时我必须与其他人的Javascript一起工作。此外,我的程序实际上已经开始在页面完全加载到浏览器后操作这些网站,所以我不能只是首先自动重写javascript然后加载页面。好吧,所以我想知道我是否可以“永久”修改在我的浏览器中实现和执行警报/确认的方式。在windows应用程序领域中,类似于dll注入等等。

2 个答案:

答案 0 :(得分:1)

是的,可以做到。试试这个thread

答案 1 :(得分:0)

这项工作在chrome 10,ff 4,msie 8(使用jquery简洁)

window.alert = function(x) {
    $('<pre>',{text:x}).appendTo('body');
    }