繁体   English   中英

在用户脚本/greasemonkey 中,当网站已经使用旧版本时,如何使用更新版本的 jQuery?

[英]In a userscript/greasemonkey, how do you use a newer version of jQuery when the website already uses an older version?

我正在尝试为已经在使用旧版 jQuery 的网站编写用户脚本。 如果我在用户脚本中@require一个现代版本,我会收到一个控制台错误,说明名为exists的字段如何不存在。 由于这两个版本的 jQuery 不兼容,有什么方法可以同时使用它们而不冲突?

也许有比这更好的解决方案,但这是我想出的: @require jQuery 按照您通常想要的方式,然后在脚本的末尾放置一个$.noConflict(); . 由于您的某些用户脚本功能可能需要使用最新版本,因此放置$.noConflict(); 可能还不够; 作为最后一行。 为避免考虑这种可能性,您可以这样编写脚本:

...
// @require https://code.jquery.com/jquery-3.6.0.min.js
// ==/UserScript==

((jQueryAsAParameter) => {
  // use jQueryAsAParameter in here, because $ may refer to the old version
  ...
})($);

$.noConflict();

如果您想了解更多信息,这称为IIFE 楼上说的有点奇怪。 我这样写是为了让下一个例子更容易理解。 这达到了相同的效果,但在我看来,它更惯用。

...
// @require https://code.jquery.com/jquery-3.6.0.min.js
// ==/UserScript==

(($) => {
  ...
})($);

$.noConflict();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM