@require-ing jQuery overwrites the page's $ variable

自古美人都是妖i 提交于 2019-11-29 11:36:40
Brock Adams

Greasemonkey 1.0, radically changed the way the sandbox works, busting thousands of scripts. See also, jQuery in Greasemonkey 1.0 conflicts with websites using jQuery.

This is a huge problem, and I hope you will join me in voicing your opinion/experiences on the principle bug report for this issue.

Meanwhile, restore the sandbox to your script, and resolve the $ conflict, by editing your Metadata Block to end with the following lines:

// @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.
*/


Specifying a @grant value (other than none) reactivates the sandbox.


You might also consider switching to Scriptish, which has offered superior features and performance in the past, and does not suffer from this new sandbox behavior.

Prasanth

See jQuery.noConflict();; it explains a lot.

EDIT:
Found "Greasemonkey 1.0 + jQuery: Broken, with Workaround" on searching.

Possible solution:

 this.$ = this.jQuery = jQuery.noConflict(true);

Doing that, probably will implicitly specify that $, jQuery will be available in your script's namespace.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!