2

これは、これらの特定のソフトウェアバージョンに関連する非常に特殊な(そして奇妙な)バグです。

  • Joomla 1.5.23
  • jQuery 1.7.2
  • Mootoolsアップグレード(Joomlaプラグイン)
  • Mootools 1.2.5
  • Firefox 18.0.1

バグはそれが示唆するよりも広範囲に及ぶ可能性があることに注意してください。これらは私が現在実行しているバージョンです。

この組み合わせでは、

jQuery('.st');

次の3つの要素すべてに一致します。

<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ステートメントです。なぜFirefoxだけに問題があり、Chromeなどには問題がないのかわかりません。

この「mootoolsupgrade」プラグインとそれがもたらす副作用についてはよくわからないので、そのコードをコメントアウトするだけでは注意が必要です。上記のことを十分に理解していて、光を当てることができる人はいますか?

アップデート

OK、いくつかのデバッグの後、私は近づいています。バグ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 (必要に応じて移行プラグインを使用)。問題が解決しました?

于 2013-02-07T13:45:27.540 に答える
0

この Joomla プラグインをチェックしてください - http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18654 jQuery を noConflict で使用できるようになるため、Joomla 1.5 の Mootols と一緒に使用できます。 . 幸運を。

于 2013-02-07T15:10:40.490 に答える