2010-07-27 45 views
3

我想写一个非常简单的greasemonkey脚本,因为我讨厌“你确定吗?”在我使用了很多网站的javascript确认。我只是将它用于个人使用,不会发布它或任何东西。在Google搜索后,我发现http://wiki.greasespot.net/UnsafeWindow解释了我想要做的事情。如何编写一个greasemonkey脚本来删除一个confim对话框?

因为我想要的网页的源代码是这样的

var message = "Are you sure?"; 
function confirmIt(message) { 
    var result = confirm(message); 
    return result; 
} 

我想只是返回true更换confirmIt(消息);

所以我做了一个脚本

var oldFunction = unsafeWindow.confirmIt(message); 
    unsafeWindow.confirmIt(message) = function() { 
    return true; 
}; 

我得到的错误“没有定义的消息。”

我不知道我是否正在讨论这个权利(我不这么认为),但是我希望得到一些在Greasemonkey方面有更多经验的人的指导,关于如何替换页面上的Javascript函数。

+1

如果你发布网页,我可能会告诉你。它可能是你看到的弹出窗口只是一个覆盖div - 每次使用greasymonkey加载页面时都隐藏div,并且你的工作更容易 – jakeisonline 2010-07-27 02:20:43

回答

4

您需要将unsafeWindow.confirmIt作为一个变量,除了函数(它是)之外。因此,在您的代码中执行所尝试的方法是:

var oldFunction = unsafeWindow.confirmIt; 

unsafeWindow.confirmIt = function(message) { 
    return true; 
}; 

试试这个。

+0

工作!谢谢。奇怪的是,我不在乎在我的函数中访问变量消息,但是如果我确实想要,如果我似乎无法访问参数,我该怎么做呢? – 2010-07-27 02:41:17

+1

您可以访问参数。你的功能被定义为采用一个它称为“消息”的参数。你可以说 unsafeWindow.confirmIt = function(message){alert(message);返回true;}; ,它的工作原理与您预期的完全相同。 – Hellion 2010-07-27 06:50:09

相关问题