长话短说:
一段时间以来,我们已经记录了有关基于 JQuery/JQueryUI 的系统的错误。在它的核心,我们正在做一个非常基本的点击链接 -> JQuery AJAX GET -> 打开 JQueryUI 模式模式。
我们得到的错误看起来很简单——“对象不支持属性或方法'对话框'”——导致我们相信 JQueryUI 存在错误。在花费大量时间排除浏览器不兼容、JQuery 端的错误代码、我们端的错误代码、愤怒的代码之神之后……我们幸运地休息了。在办公室的一台机器上进行 100% 的复制。
原来这东西充斥着广告软件——特别是easyinline的[旧版本]——http: //www.easyinline.com。当用户单击任何链接时,将加载级联的 javascript 文件,包括从 Google 的 CDN 重新加载 JQuery。
对于大多数链接来说,这并不是一个真正的问题——它们无论如何都会让你离开页面并且一切都会重新加载。但是对于我们的模态,这意味着每个模态链接都会在发送请求时覆盖我们的 JQuery,从而导致响应尝试使用现在缺少 JQueryUI 和任何其他插件的“新”$。
最初,我们考虑为“我们的”JQuery 创建另一个全局变量($$ 或其他东西),并在我们的代码中显式使用它,而不仅仅是 $。问题在于我们使用了其他一些依赖 $ 的 3rd 方工具,而加载广告软件的 $ 是不同的(旧)版本。因此,正确保存 $ 很重要。
有任何想法吗?我知道 JQuery 的 noConflict() 方法,但粗略一瞥后认为它不符合要求。