2

这是与这些特定软件版本相关的一个非常具体且奇怪的错误:

  • Joomla 1.5.23
  • jQuery 1.7.2
  • Mootools 升级(一个 Joomla 插件)
  • Mootools 1.2.5
  • 火狐 18.0.1

请注意,该错误可能比所暗示的更广泛;这些只是我目前正在运行的版本。

在这个组合中,

jQuery('.st');

匹配以下所有三个元素:

<p class="test">one</p>
<p class="st">one</p>
<p class="stellar">one</p>

我已经从 mootools 脚本中隔离了以下原因:

Native.implement([Element, Document], {
    getElementsByClassName: function(className){
        MooTools.upgradeLog('1.1 > 1.2: Element.filterByTag is deprecated.');
        return this.getElements('.' + className);
    },

    getElementsBySelector: function(selector){
        MooTools.upgradeLog('1.1 > 1.2: Element.getElementsBySelector is deprecated. Use getElements()');
        return this.getElements(selector);
    }
});

具体来说,是 return 语句getElementsByClassName改变了本机行为。我不确定为什么只在 Firefox 中存在问题,而不是在 Chrome 中。

我对仅仅注释掉该代码持谨慎态度,因为我不太了解这个“mootools 升级”插件,也不知道它会产生什么副作用。是否有足够熟悉上述内容的人能够阐明任何观点?

更新

好的,经过一些调试,我越来越接近了。该错误与Selectors.Filters.byClass取决于String.contains(). 当然,mootools 覆盖了该功能 -覆盖似乎只在 Chrome 中生效。这也会影响对Element.hasClass进行类似调用的函数String.contains()

4

2 回答 2

0

解决方案:升级到 Joomla 1.5.26 以获得最新的安全性

将 jQuery 升级到最低 1.8.3。1.9(如果需要,使用 migrate 插件)如果可能的话。问题解决了?

于 2013-02-07T13:45:27.540 回答
0

看看这个 Joomla 插件 - http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18654 它可以让你使用没有冲突的 jQuery,所以你可以在 Joomla 1.5 中将它与 Mootols 一起使用. 祝你好运。

于 2013-02-07T15:10:40.490 回答