man*_*els 3 jquery greasemonkey tampermonkey
我@require在我的脚本文件中使用此行为我的Greasemonkey脚本执行jQuery:
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
Run Code Online (Sandbox Code Playgroud)
而且效果很好; 我可以$('#id')用来访问DOM.
但是,$"真实"页面的变量被修改($jQuery 1.2.xx 在哪里):我得到一个$.include未定义的错误.
我认为Greasemonkey的沙盒模型会阻止目标页面的变量被覆盖?
如何确保包含javascript库不会影响"真实"网站,而只影响我的Greasemonkey脚本?
Greasemonkey 1.0彻底改变了沙盒的工作方式,破坏了成千上万的脚本.另请参阅,Greasemonkey 1.0中的jQuery与使用jQuery的网站冲突.
这是一个很大的问题,我希望你能和我一起就这个问题发表关于原则错误报告的意见/经验.
同时,$通过编辑元数据块以使用以下行结束,将沙箱恢复到脚本并解决冲突:
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a major design change introduced in GM 1.0,
It restores the sandbox.
*/
Run Code Online (Sandbox Code Playgroud)
指定@grant值(除了none)重新激活沙箱.
您也可以考虑切换到过去提供了卓越功能和性能的Scriptish,并且不会受到这种新沙盒行为的影响.
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |