0

我需要在一个窗口确认框中单击“确定”,该确认框可以预见地出现在我的用户脚本执行的某个点。通常当我需要这样做时,我只是在执行时查看源代码,无论窗口确认:

例如

...onclick="DoWathever()">

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

话虽如此,我已经在 stackoverflow 和 google 上查看了可能的解决方案,并发现了一个:在警报上单击“确定”或通过 jquery/javascript 确认对话框?

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

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

现在它变得很奇怪,我有两种使用这个解决方案的经验:

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

2)如果我将它包含在脚本中(在所有其他事情之前,请注意)它不会起作用,并且javascript会像往常一样通过确认窗口询问我。

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

谢谢。

4

1 回答 1

0

在用户脚本中,window与页面级别window所指的内容不同,因此您需要这样做:

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

unsafeWindow在你这样做之前阅读危险。

于 2013-08-21T14:36:01.943 回答