包括JQuery的特定版本和插件,而不与页面冲突'的JavaScript库
Include a specific version of JQuery and a plugin without conflicting with the page's JavaScript library?
TL;DR:我想在多个不同的网站上包含一个特定版本的JQuery和一个特定的JQuery插件,该插件与我在这些网站上包含的JQuery相关,我对它们使用的JavaScript库/插件一无所知,不会发生冲突。可能的怎样
整个故事:假设我想建立一个Reddit平台,通过在页面上包含http://myredditplatform.com/reddit.js
和<a href="" data-reddit-thread-id="1234"></a>
元素,多个网站可以链接到Reddit线程。一旦用户点击这样的链接,我就会在一个漂亮的模态窗口中打开reddit。
现在,因为我希望Reddit平台的体验在所有使用我的脚本的网站上保持一致,我希望所有网站都使用我的特定模式插件,我希望以我的特定方式设计链接。
但我永远无法确定其他网站使用的是什么Javascript库或插件,所以我必须确保当reddit.js
加载JQuery时,它不能与页面上的其他库冲突,当reddit.js
加载时,例如prettyPhoto
插件,它应该只与我包含的JQuery库相关联。
但我也希望我的平台被广泛采用,所以我不想对网站施加任何限制,比如你必须有jQuery,或者你必须加载prettyPhoto。我只想让他们包括一个JS文件reddit.js
,它为他们做一切。
有可能做到这一点吗?你会怎么做?
谢谢!
下面是我的小部件加载程序的精简版本,它基本上可以满足您的需求。
关键代码行是jquery1_8_2 = jQuery.noConflict(true);
更多信息请点击此处:http://api.jquery.com/jQuery.noConflict/
var myWidgetLoader = function() {
this.start = function() {
this.getScript('https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', function(){
jquery1_8_2 = jQuery.noConflict(true); // true = unconflict all jQuery vars, including "jQuery"
(function(jQuery) {
var $ = jQuery;
// do stuff that uses jQuery
})(jquery1_8_2);
});
}
this.getScript = function(url, success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0], done=false;
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') ) {
done = true;
success();
}
};
head.appendChild(script);
}
}
myWidgetLoader.start();
您可以定制jQuery,它不会破坏全局。看看来源:https://github.com/jquery/jquery/blob/master/src/exports.js.你可以修改这行:
window.jQuery = window.$ = jQuery;
像这样:
window.myRedditPluginJquery = jQuery;
然后,当您运行代码时,您需要使用myRedditPluginJquery
作为$
。类似IIFE:
(function($){
//your code goes here
//you also probably have to paste the source code for that plugin here too
})(myRedditPluginJquery);
- Javascript-ID冲突的几率
- 数据与Javascript中的继承冲突
- 使用JavaScript和HTML5画布进行冲突检测
- javascript对象原型与jquery冲突
- Javascript滑块不滑动,如何判断是否存在JS冲突
- Javascript两个日期选择器冲突
- 防止WordPress javascript冲突的良好实践
- IE8/Javascript冲突?IE8正在开发中冻结整个站点-包括Javascript列表
- 对象数组上的html5 javascript冲突
- 当一个对象与javascript画布中的另一个对象发生冲突时,如何停止该对象
- Javascript 在 Rails 4.2.0 上冲突
- Rails - jQuery和javascript之间的冲突
- 如何在没有冲突的情况下将 JQuery 包含在 JavaScript 文件中
- 与 Fusion Charts 和 JQWidgets 冲突的 Javascript 库
- 多个javascript(不同版本)冲突
- Html与php中的javascript似乎存在冲突
- 两个第三方JavaScript库命名冲突
- 如何在javascript模块中包含jquery而不与全局名称空间冲突
- Javascript验证冲突
- 脚本相互冲突——JavaScript