Greasemonkey,覆盖网站功能

时间:2010-10-31 16:51:52

标签: javascript jquery function greasemonkey

我已经阅读了很多内容,并且现在已经尝试完成这项工作约5个小时......所以这里是

我想编写一个覆盖函数dummy(){$ .ajax(...)}的脚本; 在网站上。

这是我正在尝试做的事情

unsafeWindow.dummy = function(data){differantFunction(); $.ajax(...);};

function differantFunction(){
...
}

但是虚拟函数本来可以调用来在原始页面上做某事......现在什么都不做。

//更新

我尝试运行该功能,我试图通过adres栏覆盖以查看错误:(javascript:dummy(“..”);)

我得到一个错误告诉我$ is undefined但我在网站和用户脚本上有jquery ...我现在迷路了

1 个答案:

答案 0 :(得分:11)

这是因为脚本在GM范围内运行 如果您不使用任何GM功能(例如GM_setValueGM_xmlhttpRequest),我建议您执行以下操作:

var script = document.createElement('script'); 
script.type = "text/javascript"; 
script.innerHTML = (<><![CDATA[

// YOUR CODE GOES HERE

]]></>).toString();
document.getElementsByTagName('head')[0].appendChild(script);

将代码编写为普通脚本,而不是GM脚本 我的意思是,删除所有unsafeWindow引用和相关内容 这将使脚本在正确的范围内运行。

但是如果你使用GM函数,那么你需要在正常范围内的每个变量之前添加unsafeWindow(如$),或者执行以下操作并祈祷使其正常工作:

$ = unsafeWindow.$;
//...

PS。: Multiline string with E4X不再受支持。其他一些选择是:
 1)将您的代码添加到函数中然后使用     Function.prototype.toString
 2)将您的代码创建为单独的文件,然后add it as a resource
 3)add a backslash at the end of each line