【问题标题】:JS embedded on other sites - how can I use jQuery without screwing up other jQuery installations?嵌入其他网站的 JS - 我如何使用 jQuery 而不会搞砸其他 jQuery 安装?
【发布时间】:2010-10-25 12:27:01
【问题描述】:

我正在开发一些将嵌入其他网站的 JavaScript(例如 Google Analytics(分析)或 AdSense)。有一些核心 JS 正在完成——AJAX 请求、动画、JSON(P)。

我已经使用 jQuery 编写了原型,并且真的很想继续使用它,但是如果其他网站也安装了 jQuery,这可能会在嵌入到其他网站时出现问题——甚至可能是不同的版本。

有什么好办法解决这个问题吗?到目前为止,我得到的最佳解决方案是将所有出现的jQuery 替换为kQuery,将$ 替换为$kQuery,这样就不存在命名冲突。有什么建议?我怎样才能尽可能地与他们现有的 JavaScript 兼容?

【问题讨论】:

    标签: javascript jquery conflicting-libraries


    【解决方案1】:

    jQuery 有一个noConflict 模式;这就是你需要的。 jQuery 在覆盖之前将 window.jQuerywindow.$ 的原始值保存为本地副本。

    所以,一个解决方案是:

    var kQuery = $kQuery = $.noConflict( true );
    

    window.jQuerywindow.$ 替换为原始值并返回对jQuery 本身的引用


    如果您根本不想更改代码,只需将其包装在:

    (function( $ ){
       // Your code with $
    })( $.noConflict( true ) );
    

    【讨论】:

      【解决方案2】:
       this might cause a problem when embedded on the other sites if they also have jQuery installed -- probably even a different version
      

      我认为这不是真的。我在至少 3 个不同版本的 jQuery 之间切换没有问题,它是 backwards compatible

      【讨论】:

      • 我可能正在使用以前版本中没有的新功能(例如 JSONP 支持)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 2013-04-02
      • 1970-01-01
      • 2018-07-03
      相关资源
      最近更新 更多