3

しばらくの間、私は「onload」イベントが発生するのを待って、何らかの処理を実行することで、JavaScript コンポーネントの初期化を実行していましたmain()。よりきれいに見え、DOM の ID 状態が適切であることを確認できました。しかし、しばらくそのペースを試してみたところ、コンポーネントの初期化が、ロード中にハングしている何らかのリソース (画像、css、iframe、フラッシュなど) によって妨げられていることがわかりました。

ここで、インライン実行を使用して初期化呼び出しを HTML ドキュメント自体の最後に移動し、<script />他の外部リソースの前に初期化をプッシュすることを発見しました。

「オンロード」を待つのではなく、それを行うことに伴ういくつかの落とし穴があるのではないかと思います。

どの方法を使用していますか?

編集:ありがとう。各ライブラリには、実装の違いに特化した機能があるようDOMContentLoadedですreadyState。私はプロトタイプを使用しているので、これが必要でした。

4

5 に答える 5

4

私にとっては、jquery を使用しており、そのドキュメントの準備ができている状態により、DOM がロードされていることが保証されますが、あなたが言うようにリソースを待機していません。もちろん、javascript フレームワークなしでこれを行うことができ ます。たとえば、作成できる関数が必要です: DOM の準備が整っていることは決して悪いことではありません。

于 2009-04-03T16:41:40.637 に答える
2

Jqueryには $(document).ready() があります

ほとんどのスクリプトを実行する理想的な時点は、ドキュメントの準備ができたときであり、必ずしも「ロード」されたときではありません。

こちらをご覧ください

于 2009-04-03T16:40:23.900 に答える
1

この問題を回避する正しい方法はDOMContentLoaded、すべてのブラウザでサポートされているわけではないイベントを使用することです。ハック(ポーリングdoScroll()や使用などonreadystatechange)が存在するため、ライブラリはブラウザ間でこの機能を提供できます。

DOMContentLoadedしかし、一般的なJavaScriptフレームワークでは対処されていないチャンク転送にはまだ問題があります。

これがこの問題に関する私の見解です。

于 2009-04-03T22:11:21.937 に答える
1

私はどちらも使いません。代わりに、初期化のタイミングを処理してくれるYUI の onDomReady() (または onContentReady()/onAvailable()) に依存しています。

(他の JS ライブラリには、ページが完全にロードされたときにのみ実行する同様の方法があります。これは一般的な JS の問題です。)

于 2009-04-03T16:41:31.183 に答える
1

これは (X)HTML 仕様に準拠していません。それはあなたのサイトをブラウザの奇妙なモードにします.

于 2009-04-03T16:42:02.150 に答える