这是一个与这些特定软件版本相关的非常具体且奇怪的错误:
请注意,该错误可能比建议的更广泛;这些只是我目前正在运行的版本。
在这个组合中,
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);
}
});
具体来说,它是getElementsByClassName
中的返回语句,它改变了本机行为。我不确定为什么仅在Firefox中出现问题,而不是Chrome等。
我很担心只是评论这段代码,因为我不太了解这个'mootools升级'插件,以及会有什么副作用。是否有人对上述内容足够熟悉才能解决问题?
更新
好的,经过一些调试,我越来越近了。该错误与Selectors.Filters.byClass
函数有关,该函数取决于String.contains()
的行为。当然,mootools覆盖了这个功能 - BUT 覆盖只会在Chrome中生效。这也会影响对Element.hasClass
进行类似调用的String.contains()
函数。
答案 0 :(得分:0)
解决方案:升级到Joomla 1.5.26以获得最新的安全性
将jQuery升级到最低1.8.3。 1.9(如果需要,使用迁移插件)如果可能的话。问题解决了吗?
答案 1 :(得分:0)
查看此Joomla插件 - http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18654 它将允许您使用带有noConflict的jQuery,因此您可以将它与Joomla 1.5中的Mootols一起使用。 祝你好运。