2

問題は IE6 で発生します (おそらく document.getElementsByClassName より前のすべてのブラウザー)。Prototype 1.5 で jQuery 1.6 を使用する

<script src="../js/jquery-1.6.js" language="javascript" type="text/javascript"> </script>
<script language="javascript" type="text/javascript">
    // Prototype will claim the '$' namespace so give jQuery '$j' instead.
   $j = jQuery.noConflict();
</script>
<script src="../js/prototype.js" language="javascript" type="text/javascript"> </script>

この問題については、http: //randomous.com/forum/topic.php?id=916 (2 番目の投稿を参照) とここで議論されています: http://ejohn.org/blog/getelementsbyclassname-pre-prototype-16

基本的に、Prototype はブラウザで document.getElementsByClassName を作成します (これは、最近のほとんどのブラウザでネイティブにサポートされています)。

ただし、jQuery は document.getElementsByClassName の存在もチェックし、それが見つかると、ネイティブ実装を取得していると見なします。しかし、実際には、jQuery が期待するように動作しないプロトタイプの実装を取得しています。

これを解決するために多くのトリックを試しましたが、うまくいきません。[jQuery に document.getElementsByClassName が未定義であることを伝えようとしている、プロトタイプが document.getElementsByClassName を要求するのを止めようとしている、など]

アプリケーションは古い (したがって古いプロトタイプ) ため、残念ながら主に IE6 と IE7 (そうです、FML) で動作します。私は最新の jQuery を使用しようとしています。それは私が快適であり、多くのクレイジーな UI コントロールをアプリに追加する必要があるためです - コンボボックスのオートコンプリート、ドラッグドロップピーの狂気....基本的には jQuery が必要です。

ここでの最終結果は、jQuery のクラス セレクター $('.someClass') を使用するたびにエラーが発生することです。

ここで何か考えはありますか?私はJavaScriptでまともだと思っていましたが、これは私を殺しています。

4

2 に答える 2

1

タグのないクラスセレクターが呼び出されたときに同じ問題が発生しました。たとえば、うまく機能している$('.myClass') 間にエラーが発生しました。$('div.myClass')に置き換え$('.myClass')$('*.myClass')、動作し始めました

于 2014-01-13T15:19:08.610 に答える
0

この答えは少し単純に思えるかもしれませんが、プロトタイプを最新のものに更新してください。彼らはそのひどい決定を放棄しました: http://www.prototypejs.org/api/utility/getElementsByClassName

また、自分で作成したのではないアプリをサポートしている可能性があることは理解していますが、将来オプションがある場合は、他のフレームワークの機能検出機能を台無しにするフレームワークを決して選択しないでください.

ネイティブ機能を偽造することは有害であると考えるべきです。私はあなたを見ています、プロトタイプ。

于 2011-10-25T12:29:25.650 に答える