我正在创建一个 JS 片段,用户可以将其包含在他们的网站上。此代码片段依赖于 jQuery(和 Backbone)。如果我将它嵌入到一个尚未加载 jQuery 的网站中,它工作得很好,但如果加载了,它通常仍然没问题,除非他们编写了自定义 jQuery 扩展,然后这些扩展被覆盖。
是否可以限制我的 jQuery 范围,使其不会覆盖任何现有的 jqueries?
最佳答案
我最近遇到了一个非常类似的问题。
我们使用 Requirejs 1.0.6,然后我们使用segment.com 将分析集成到我们的 Web 应用程序中。它包含了另一个名为inspectlet.js的js,它用于重新定义jquery。
由于我们原来的应用程序具有 jquery 扩展,因此在我们集成分析代码时,所有扩展都消失了,因为 jquery 被重新定义了。
我们案例中的问题是inspectlet.js在amd/require中重新定义了jquery,升级到requirejs2.0.5后问题得到解决。
我建议使用与inspectlet.js相同的代码来使用/定义jquery。
http://cdn.inspectlet.com/inspectlet.js
var __inspsetjqueryback = false;
if (typeof jQuery != "undefined"){
__inspsetjqueryback = jQuery;
}
var __inspsetdollarback = false;
if (typeof $ != "undefined"){
__inspsetdollarback = $;
}
if(typeof jQuery != "undefined") jQuery.noConflict(true);
//define jquery - execution execution code goes here...
var $i = $i || jQuery.noConflict(true);
if(__inspsetjqueryback !== false){
jQuery = __inspsetjqueryback;
}
if(__inspsetdollarback !== false){
$ = __inspsetdollarback;
}
关于javascript - 创建需要 jQuery 的可嵌入 JS,如何不覆盖现有 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144615/