1

Javascript/jQuery の実行とそのシーケンスに関する質問/説明。

ここで自分の質問に答えているように見える場合は申し訳ありませんが、このプロセスで重要な何かが欠けていると感じています。

この質問をもたらしたDOMの準備ができていなかったため、セレクターが使用されていないと言われました。スクリプトは最初、ready jQuery の ready メソッドを使用して頭の中にありました。

みんな、ありがとう。

問題:

  1. Drupal テンプレート ファイルにはアクセスできません。
  2. 頭にのみ追加できます。
  3. jQuery による追加は、script タグではあまり役に立ちません。
  4. 私たちのソリューションは現在、マークアップ内のファイルにリンクしています。
  5. ここでのプロセスについては、明確化を本当に求めています。

環境:

(申し訳ありません)...要素は、頭のスクリプトから、セレクターによってターゲットにされていませんでした。問題なく HTML タグを対象としていたため、構文は正しかった。

私の理解では、DOM が完全に構築された後に、ready メソッド/結果のリスナーがトリガーされるということでした。

私がすでに知っていると信じていること

  1. スクリプトは、マークアップの body タグのすぐ上に配置するのが理想的です。

  2. トークナイザーがスクリプト タグに遭遇すると、すべてを停止し、スクリプトを実行することを知っています (遅延/非同期でない限り)。

  3. これが、DOM の準備が整うように、body の終了タグの上に配置するのが理想的である理由です。

  4. jQuery ready メソッドがリスナーをアタッチすることを知っています。DOM がロードされた後にブラウザーが準備完了状態に切り替わると、リスナーが起動します。

質問:

  1. これらすべてを考えると、頭に配置すると、トークナイザーのためにすぐに実行されるため、ready メソッドが役に立たなくなりますか?

  2. これは本当に複数のwindow.onloadsの衝突/上書きを避けるためですか? (明確にする必要がありました。)

4

2 に答える 2

1

これらすべてを考えると、頭に配置すると、トークナイザーのためにすぐに実行されるため、ready メソッドが役に立たなくなりますか?

違う。このready()メソッドは、DOM が完全にロードされたときにのみready()呼び出されます。DOM がロードされるのを待つリスナーを確立して、DOM をready()操作する準備ができたときにメソッド内のステートメントが実行されるようにするだけです。つまり、loadedドキュメントが完全にロードされたときにのみ呼び出されて実行されるイベントのリスナー。

これは、複数のオンロードの衝突/上書きを避けるためだけですか?

「衝突/上書き」とはどういう意味ですか? JavaScript で同じイベントをリッスンする複数のリスナーを持つことができ、それらが互いに上書きしたり衝突したりすることはありません。

于 2013-11-01T14:53:09.247 に答える
1

あなたの質問から:

DOM がロードされた後、ブラウザーが準備完了状態に切り替わるまで、jQuery の準備完了メソッドが待機することはわかっています。

そうですね。jQueryメソッドは待機readyしません。イベントリスナーをアタッチします。関数はアタッチされていますが、実行されていません。この関数は、DOM の準備が整ったときにのみ実行されます。ページの残りの部分は引き続きロードされます。

ここでは、本当にマイクロ最適化の領域にいます。はい、script要素を の最後に配置するのbodyが理想的ですが、巨大で複雑で時間のかかるスクリプトを使用しない限り、実際にはほとんど違いはありません。

于 2013-11-01T14:54:59.597 に答える