如何确认一个window.confirm与JavaScript?
问题描述:
我需要点击一个窗口确认框中的“确定”,这个确认框将可预见地出现在我的用户脚本执行的某个点上。通常当我需要这样做时,我只是在执行的观察者处查看源代码,窗口确认:如何确认一个window.confirm与JavaScript?
例如,
...onclick="DoWathever()">
然后我会调用本机DoWathever()并绕过确认窗口。问题是,在调用window.confirm的毯子下面的函数中,所以我不能绕过这个简单的方法。
话虽这么说,我已经看着计算器和谷歌可能的解决方案,并发现一个:Clicking 'OK' on alert or confirm dialog through jquery/javascript?
这基本上意味着我通过创建一个“假” window.confirm覆盖默认确认,使用:
window.alert = function() {
console.log.apply(console, arguments);
return true;
};
现在这时候会很奇怪,我不得不使用此解决方案2种经验:
1)如果我只是在控制台上手动声明它(我通常做的测试之前,实际将它包含在脚本中),它将完美工作并确认对话框。 2)如果我将它包含在脚本中(在其他任何事情之前,请介意),它将无法正常工作,JavaScript会一如既往地向我询问确认窗口。
所以...是的,任何想法为什么它不能在2)或任何可能的替代解决方案吗?
谢谢。
答
在userscripts,window
并非指同一件事的页面级window
指,所以你需要这样做:
unsafeWindow.alert = function() {
console.log.apply(console, arguments);
return true;
};
阅读危险的unsafeWindow
你这样做虽然之前。
我想这是由于您的扩展的沙箱。你没有绑定到1)和2)中相同的''window''函数。如果你想绑定到页面上下文中的''window''函数,你将不得不[将脚本注入页面](http://voodooattack.blogspot.com/2010/01/writing-google - 铬 - 扩展 - 如何-to.html)。 – BeRecursive 2013-02-12 12:50:38