我已经阅读了很多内容,并且现在已经尝试完成这项工作约5个小时......所以这里是
我想编写一个覆盖函数dummy(){$ .ajax(...)}的脚本; 在网站上。
这是我正在尝试做的事情
unsafeWindow.dummy = function(data){differantFunction(); $.ajax(...);};
function differantFunction(){
...
}
但是虚拟函数本来可以调用来在原始页面上做某事......现在什么都不做。
//更新
我尝试运行该功能,我试图通过adres栏覆盖以查看错误:(javascript:dummy(“..”);)
我得到一个错误告诉我$ is undefined但我在网站和用户脚本上有jquery ...我现在迷路了
答案 0 :(得分:11)
这是因为脚本在GM范围内运行
如果您不使用任何GM功能(例如GM_setValue
或GM_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