我在我的脚本文件中使用此行为我的Greasemonkey脚本要求jQuery:
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
而且效果很好;我可以使用$(‘#id’)来访问DOM.
但是,“真实”页面的$变量被修改(其中$是jQuery 1.2.xx):
我收到一个错误,$.include没有定义.
我认为Greasemonkey的沙盒模型会阻止目标页面的变量被覆盖?
如何确保包含javascript库不会影响“真实”网站,而只影响我的Greasemonkey脚本?
解决方法
Greasemonkey 1.0,radically changed the way the sandbox works,破坏了成千上万的脚本.另见,jQuery in Greasemonkey 1.0 conflicts with websites using jQuery.
这是一个很大的问题,我希望你能和我一起在the principle bug report for this issue表达你的观点/经验.
同时,将沙箱恢复到您的脚本,并通过编辑Metadata Block以以下行结束来解决$冲突:
// @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. */
指定@grant值(非none)重新激活沙箱.