【问题标题】:Conflict between mootools and another (non-framework) scriptmootools 和另一个(非框架)脚本之间的冲突
【发布时间】:2010-11-13 02:03:38
【问题描述】:

我正在尝试将名为 ImageFlow 的 javascript 集成到 Joomla 站点中,但在 Internet Explorer(v8 本机和兼容模式)中出现错误并且它不会显示。它在 Firefox 和其他浏览器中运行良好)。

我认为该错误与 mootools 有关。错误详情:

消息:对象不支持此属性或方法
线路:48
字符:27
代码:0
URI:[域]/media/system/js/mootools.js

消息:对象不支持此属性或方法
线路:953
字符:4
代码:0
URI:[域]/media/imageflow/imageflow.js

mootools 第 48 行(缩小)的开头是:

if(!this.addEventListener)fn=fn.create({'bind':this,'event':true});

相关的imageflow代码为:

/* Just in case window.onload happens first, add it to onload
using an available method.*/
if(typeof addEvent !== "undefined")
{
    addEvent(window, "load", run); // <-- line 953
}
else if(document.addEventListener)
{
    document.addEventListener("load", run, false);
}
else if(typeof window.onload === "function")
{
    var oldonload = window.onload;
    window.onload = function()
    {
        domReadyEvent.run();
        oldonload();
    };
}
else
{
    window.onload = run;
}

【问题讨论】:

    标签: javascript mootools conflict imageflow


    【解决方案1】:

    我找到了解决方案:从图像流代码中删除第一个 if 子句。我不知道它是否适用于旧版浏览器,但如果没有它,该脚本在 IE 6-8 和适当的浏览器中运行良好。

    【讨论】:

    • 嗯,mootools 确实定义了 addEvent 但作为方法而不是函数。因此 addEvent(window, "load", run);失败 - 正确的 mootools 方法是:window.addEvent("domready", function() { run(); });
    【解决方案2】:

    我曾经在使用 lightbox 和 mootools 时遇到过类似的问题。我通过找到一个基于 mootools 的灯箱实现来解决它(实际上更好)。如果不能,那么我建议将 ImageFlow 放入 iframe,这样两个脚本就不会冲突。

    【讨论】:

      猜你喜欢
      • 2011-10-07
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多