Mar*_*ars 7 javascript jquery greasemonkey function
我已经阅读了很多,现在已经尝试将这项工作完成约5个小时......所以现在就是这样
我想编写一个覆盖函数dummy(){$ .ajax(...)}的脚本; 在网站上.
这是我试图这样做的方式
unsafeWindow.dummy = function(data){differantFunction(); $.ajax(...);};
function differantFunction(){
...
}
Run Code Online (Sandbox Code Playgroud)
但是虚拟函数本来可以调用来在原始页面上做某事......现在什么都不做.
//更新
我尝试运行该功能,我试图通过adres栏覆盖以查看错误:(javascript:dummy("..");)
我收到一个错误,告诉我$是未定义但我在网站和用户脚本上有jquery ...我现在迷路了
w35*_*l3y 12
发生这种情况是因为脚本在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);
Run Code Online (Sandbox Code Playgroud)
将代码编写为普通脚本,而不是GM脚本.
我的意思是,删除所有unsafeWindow引用和相关的东西.
这将使脚本在正确的范围内运行.
但是如果你使用GM函数,那么你需要unsafeWindow在正常范围内的每个变量之前添加(比如$)或者执行类似下面的操作并祈祷使它工作:
$ = unsafeWindow.$;
//...
Run Code Online (Sandbox Code Playgroud)
PS.: 不再支持带E4X的多行字符串.其他一些选项是:
1)将代码添加到函数中,然后使用
Function.prototype.toString
2)将代码创建为单独的文件,然后将其添加为资源
3)在每行的末尾添加反斜杠