gpt4 book ai didi

jquery - Mootools (joomla) + jQuery + Firefox 冲突 : selector bug

转载 作者:行者123 更新时间:2023-12-01 05:56:56 24 4
gpt4 key购买 nike

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

  • 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);
}
});

具体来说,是 getElementsByClassName 中的 return 语句改变了 native 行为。我不知道为什么只有 Firefox 有问题,而 Chrome 等则没有。

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

更新

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

最佳答案

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

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

关于jquery - Mootools (joomla) + jQuery + Firefox 冲突 : selector bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14751753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com