Greasemonkey,覆盖网站function

我已经阅读了很多,现在已经尝试将这项工作完成了大约5个小时……所以现在就是这样

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

这是我试图这样做的方式

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

但是在原始页面上被调用来做某事的虚拟函数……现在什么都不做。

//更新

我尝试运行该function,我试图通过adres栏覆盖,看看有什么问题:(javascript:dummy(“..”);)

我收到一个错误,告诉我$是未定义但我在网站和用户脚本上有jquery …我现在迷路了

发生这种情况是因为脚本在GM范围内运行。
如果您不使用任何GMfunction(如GM_setValueGM_xmlhttpRequest ),我建议您执行以下操作:

 var script = document.createElement('script'); script.type = "text/javascript"; script.innerHTML = (<>).toString(); document.getElementsByTagName('head')[0].appendChild(script); 

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

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

 $ = unsafeWindow.$; //... 

PS。:不再支持带E4X的多行字符串 。 其他一些选择是:
1)将您的代码添加到函数中,然后使用Function.prototype.toString
2)将您的代码创建为单独的文件,然后将其添加为资源
3) 在每行的末尾添加反斜杠