58

FF3.0でインデックスページをロードしているときに、次のエラーが発生します。申し訳ありませんが、2030行のコードであるため、ここにスクリプトを貼り付けることができません。

element.dispatchEventは関数ではありません

拡張すると、以下のことがわかります。

fire()()prototype.js?1(行3972)

_methodized()()prototype.js?1(246行目)

fireContentLoadedEvent()prototype.js?1(4006行目)

[このエラーの中断]element.dispatchEvent(event);

element.dispatchEvent(event);はprototype.jsの3972行目にあります。インデックスページに、prototype.jsと他の数十のjsファイルを含めています。

誰かがこの種のエラーに遭遇しましたか?このエラーが表示される理由を誰かに説明してください。

4

5 に答える 5

120

ひょっとして同じページでjqueryとprototypeを使っていませんか?

その場合は、jquery noConflict モードを使用してください。それ以外の場合は、プロトタイプの $ 関数を上書きしています。

noConflict モードは、次のようにして有効にします。

<script src="jquery.js"></script>
<script>jQuery.noConflict();</script>

注: これを行うと、ドル記号変数は jQuery オブジェクトを表しなくなります。すべての jQuery コードを書き直さないようにするために、この小さなトリックを使用して、jQuery のドル記号スコープを作成できます。

jQuery(function ($) {
    // The dollar sign will equal jQuery in this scope
});

// Out here, the dollar sign still equals Prototype
于 2009-07-16T02:50:23.120 に答える
4

次の行を変更します

$(document).ready(function() {

jQuery.noConflict();
jQuery(document).ready(function($) {
于 2017-11-22T07:28:18.453 に答える
1

追加する必要があります

<script>jQuery.noConflict();</script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
于 2013-02-22T07:30:10.627 に答える
-1

noconflict.js の後にライブラリ jquery を呼び出すか、noconflict.js の後に jquery ライブラリを複数回呼び出して、これを確認します。

于 2016-06-17T22:11:53.017 に答える