gpt4 book ai didi

javascript - 两个第三方JavaScript库命名冲突

转载 作者:行者123 更新时间:2023-11-28 15:51:06 26 4
gpt4 key购买 nike

我有一个页面可以动态获取这两个文件。

  1. http://cdn.dev.skype.com/uri/skype-analytics.js
  2. http://nexus.ensighten.com/somethingelse.js (跟踪工具)

现在 Skype 有以下行:

s.trackAction(_t, this);

不幸的是,跟踪工具 JavaScript 文件也将 s 作为对象,因此 s.trackAction 对 Skype 无效并中断整个页面。

最佳答案

您可以执行以下操作:

  1. 加载一个脚本。
  2. 将对 s 的引用保存到变量中,例如 first_s
  3. 加载第二个脚本
  4. 将对 s 的引用保存到变量中,例如 second_s

然后,将 s 设置为您希望作为默认全局值的任何一个(例如,用于其他人的代码)。

然后,对于您自己的代码或您正在使用的任何其他代码,将其放入此类 block 中:

(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 - 两个第三方JavaScript库命名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com