如何使用javascript确认window.confirm?

时间:2013-02-12 12:46:35

标签: javascript jquery google-chrome userscripts

我需要在窗口确认框中单击“确定”,该窗口确认框可以预测地显示在我的用户脚本执行的某个点上。通常当我需要这样做的时候,我只是查看窗口确认的执行监视器的源代码:

e.g。

...onclick="DoWathever()">

然后我会调用本机DoWathever()并绕过确认窗口。问题是,在调用window.confirm的毯子下的函数中,所以我无法绕过这种简单的方法。

话虽如此,我已经查看了stackoverflow和谷歌寻找可能的解决方案,并找到了一个:Clicking 'OK' on alert or confirm dialog through jquery/javascript?

这基本上建议我通过创建一个“假”window.confirm覆盖默认确认,使用:

window.alert = function() {
    console.log.apply(console, arguments);
    return true;
};

现在,当它变得奇怪时,我有两种使用此解决方案的经验:

1)如果我只是在控制台上手动声明它(我通常在实际将其包含在脚本中之前进行测试)它将完美地工作并确认对话框。

2)如果我将它包含在脚本中(请注意其他事项,请注意)它将无法正常工作,并且javascript会一如既往地通过确认窗口询问我。

所以...是的,任何想法为什么它在2)或任何可能的替代解决方案中都不起作用?

感谢。

1 个答案:

答案 0 :(得分:0)

在用户脚本中,window并未引用与页面级别window相同的内容,因此您需要执行此操作:

unsafeWindow.alert = function() {
    console.log.apply(console, arguments);
    return true;
};

在此之前阅读unsafeWindow上的危险。