试图将someFunction.jQuery映射到“$”

我找到了一个函数( 通过这个人的github ),我可以在我的脚本中使用它来模仿API对象的function。

这是链接中的相关代码:

unsafeWindow = (function() { var e1 = document.createElement('p') e1.setAttribute('onclick', 'return window;'); return e1.onclick(); })(); 

海报上说你可以使用unsafeWindow.jQuery格式的函数

现在,我希望能够在代码中的其他地方使用$而不是jQuery关键字。 我尝试从这个堆栈溢出问题中学习以简化它并重新编写代码,如下所示:

 (function($){ var e1 = document.createElement('p') e1.setAttribute('onclick', 'return window;'); return e1.onclick(); })(jQuery); 

但它没有用。 我想我可以尝试使用$ = unsafeWindow.jQuery来映射到$ ,但我想尝试以上面看到的格式进行操作。

您可以将$映射到unsafeWindow.jQuery如下所示:

 unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute ('onclick', 'return window;'); return dummyElem.onclick (); } ) (); var $ = unsafeWindow.jQuery; // Now you can use the page's jQuery. EG: $("body").append ('

Content added by unsafeWindow.jQuery

');

但请记住:

  1. 这是一个Hack ,它可能会停止使用Chrome版本28。

  2. 由于用户脚本开火时的竞争条件,它可能仍会失败。 要解决此问题,请将// @run-at document-end到userscript的元数据块。

  3. 不要这样做! 它只会导致悲伤,副作用和维护问题。

    对于用户脚本:使用此技术(最佳跨浏览器)或此技术(依赖于页面的jQuery,但该示例也显示了如何使用GM_函数) 。

    对于完整扩展内容脚本: ,使用此技术(使用manifest.json并将所有内容妥善保存在沙箱中) 。