0

私は最近、あらゆる種類の失敗したサイトを継承しました。私はどちらかというと php 派で、最初は js は問題なく動作していました。javascript やインクルード ファイルには何も変更を加えていませんが、コンテンツをいくつか編集した後、firebug からエラーが発生しています。

a.dispatchEvent is not a function
emptyFunction()protot...ects.js (line 2)
emptyFunction()protot...ects.js (line 2)
fireContentLoadedEvent()protot...ects.js (line 2)

[Break on this error] var Prototype={Version:'1.6.0.2',Brows...pe,Enumerable);Element.addMethods();
protot...ects.js (line 2)
this.m_eTarget.setStyle is not a function

[Break on this error] this.m_eTarget.setStyle( { position: 'relative', overflow:'hidden'} );
protot...ects.js (line 43)
uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE)" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: js/prototype_effects.js :: anonymous :: line 2" data: no]

グーグルで検索すると、jquery+prototype がうまく動作しないことがあり、スクリプトを再配置することでこの問題を解決できるといういくつかの投稿が見つかりましたが、これらのセクションに触れていないため、どこからデバッグを開始する必要があるのか​​さえわかりません。以前の開発者は、プロトタイプをロードする head.inc ファイルを組み込み、scriptaculous を作成し、多くのページをライトボックスなどの関数の jquery をロードするサブテンプレートに配置しました。

このサイトは、http: //dawn.mikeyhill.com にある一時的なものです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

プロトタイプライブラリは煩わしいものです。Javascriptのコアオブジェクトにあらゆる種類のメソッドを追加します。その後、オブジェクトが反復によってfor(var k in o)反復されると、これらの新しいメソッドが含まれます(Javascriptはまだ反復不可能な属性をサポートしていないため)。そのため、プロトタイプでは、この問題の影響を受けないeach()などの機能を介して反復が常に実行されます。

問題は、古き良き「for-var-in」ループをまだ使用している他のコードにあります。このコードは壊れます。Prototypeが他のライブラリで機能しない99%のケースでは、問題は反復が原因です。

あなたはあなたがコードに触れなかったと言っています、そして私はあなたを信じているので、これは3つのオプションを残します:

  • 問題は以前にありましたが、あなたはそれに気づいていませんでした
  • 問題のあるコードは、特別な場合にのみ実行されます(特別な入力のため)。以前のプログラマーはこの入力を試したことはありません。
  • あなたは問題が他の何らかの要因によるものである1%にいます:)
于 2010-03-18T23:25:48.720 に答える