jQuery UI:Superfish WindowShopper窃取.dialog(),导致异常Object [object Object]没有方法'对话'

时间:2014-06-04 19:12:00

标签: javascript jquery jquery-ui

我网站的一些访问者加载了很多脚本,而不是我的网站链接。这可能是由于Superfish WindowShopper软件造成的。 这个库似乎也加载了jQuery,所以我的页面为一些访问者提供了多个版本的jQuery加载。

这会导致异常: Object [object Object]没有方法'dialog'

如何防止Superfish(或其他广告软件)窃取我的.dialog jQuery UI?

一些无意中链接的脚本:

https://appnext-a.akamaihd.net/source-ds.js
//www.superfish.com/ws/sf_main.jsp?dlsource=pcom&userId=4709955453116160291&CTID=p0

等等。每个浏览器的脚本各不相同。来自Akamaihd.com的第一个是经过修改的jQuery。也许还有更多。多个jQuery使.dialog消失(Uncaught TypeError: Object [object Object] has no method 'dialog')。

小提琴:http://jsfiddle.net/fybJ3/ 问题出现在Chrome和Firefox中。 IE显示对话框没有问题。

我目前的解决方法:发生此异常时显示旧式“警报”。

我该怎么办?

  • 可以修复jQuery UI,以便在加载多个版本的jQuery时显示对话框吗?
  • 我应该为对话框选择不同的库吗?
  • 或??? ???

1 个答案:

答案 0 :(得分:0)

最好的办法是使用noConflict()隔离已知的jQuery实例。

正在发生的事情是新版本将覆盖第一个版本,因此任何绑定到第一个版本的插件都将被删除。

<强> See noConflict() API docs