两个第三方JavaScript库命名冲突
Two third party JavaScript library naming collision
我有一个页面可以动态获取这两个文件。
- http://cdn.dev.skype.com/uri/skype-analytics.js
- http://nexus.ensighten.com/somethingelse.js(跟踪工具)
现在Skype有以下线路:
s.trackAction(_t, this);
不幸的是,跟踪工具JavaScript文件也有s作为对象,因此s.trackAction
对Skype无效,并破坏了整个页面。
您可以执行以下操作:
- 加载一个脚本
- 将对
s
的引用保存到一个变量中,比如说first_s
- 加载第二个脚本
- 将对
s
的引用保存到一个变量中,比如second_s
然后,将s
设置为您希望成为默认全局值的值(例如,其他人的代码)。
然后,对于你自己的代码或你正在使用的任何其他代码,将其放入这种类型的块中:
(function(s) {
// any code in here that refers to `s` will see the value of second_s
})(second_s);
或
(function(s) {
// any code in here that refers to `s` will see the value of first_s
})(first_s);
我能想到的另一个选项是修改Skype代码,使用名为skype
而不是s
的全局变量,并将修改后的版本包含在您的页面中。
如果skype代码写得正确,它就可以不使用像s
这样简单的全局定义名称。jQuery和其他使用$
符号的人已经向每个人展示了如何正确地做到这一点。
相关文章:
- 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