問題は 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でまともだと思っていましたが、これは私を殺しています。