質問

Webテクノロジーを備えたデスクトップアプリを開発するためのプラットフォームを開発しています。そうすることで、ブラウザで動作するドキュメント/オン対応の機能を取得しようとしています。プラットフォームに統合します。だから私は以前にこの質問をここで尋ねました: JavaScript-framework-that Primally Provides-document-onready-functionality

しかし、私は自分のブラウザのブラウザを取得することができませんでした(Shush、Its Secret;)。ですから、おそらく何が機能しているのかを理解しようとしているだけで、次のことを見つけました。

以下のコードは、1ミリ秒のタイムアウトの後に関数を実行するだけで使用しているこのブラウザ内で同じ効果があります。大きな画像が読み込まれている間にDOMに書き込むことができます。これは私にとって究極のソリューションではないかもしれません。このブラウザのJavaScriptエンジンによってDOM機能がどのように実装されるかに特有の何かを書くことができます。

それにもかかわらず、私はこれが標準的なブラウザで機能するかどうかを確認することにしました、そして驚いたことに、それはそうです!それに照らして、私の質問:さまざまなJavaScriptフレームワークによって提供されるDOM/Readiness機能のさまざまな実装は、単純に過剰になりますか?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
setTimeout(function() {
    var txtNode = document.createTextNode("ready_yet?");
    var ready_yet_el = document.getElementById("ready_yet");
    ready_yet_el.appendChild(txtNode);
},1);
</script>
</head>

<body>
<div id="ready_yet"></div>
<img src="http://www.ryanmorr.com/tests/ondomready/pic.jpg" />
</body>

</html>

編集/さらなる考え 私の以前の関連する質問への答えによってリンクされたページ 「FirefoxとOperaの場合、イベントタイプの簡単なチェックは、それがdomcontentloadedであるかどうかを判断します。SafariとIEはドキュメントの準備状態に対してチェックします。 「おそらく、上記の私のSetimeOutに似たセットインテバルは、最後の手段としてオンロードに依存する前に、最後から2番目の行動方針になる可能性がありますか?いずれにせよ、私が選択した埋め込み可能なブラウザを使用して、DomContentLoadedイベントもDocument.readyStateもサポートされているように見えません。

役に立ちましたか?

解決

あなたの予感は良く、よく設立されたIMOです。しかし 誰かがすでにあなたをパンチに打ち負かしています. 。簡単な答えはそれです setTimeoutいいえ すべての場合におけるDOMの準備の検出の実用的な実装。関心のあるブラウザにとっては問題ないかもしれませんが、IEは状況によっては失敗します。

Microsoft自身のASP.NET AJAXフレームワークが setTimeout DOMの準備を検出するトリック。そして驚き、驚き: 特定のユースケースでも失敗します.

要するに、問題は、ファイルサイズが大きい(例えば500K)またはネットワーク/サーバーのレイテンシのいずれかが原因で、ゆっくりと読み込まれたスクリプトを持つIEにあるようです。

他のヒント

いいえ、dom 'unreciness'バグが明らかになったとき、彼らは信じられないほど珍しく、それが起こるブラウザに固有のそれぞれを予測して追跡するのが非常に珍しく、追跡するのが難しいからです。

これらの問題を完全に回避し、常に準備が整ったDOMに対処することを知っていることを知っている方がはるかに簡単です。

例として、しばらく前に、私はすべての人のお気に入りのブラウザには、99%の時間を完全に動作することで自分自身を明確にするよりも準備ができていないDOMがありましたが、ページコンテンツにSRC属性があるIMG要素があり、場合にエラーで死亡しました。また、コンテンツには、内部のLiの数が多数あるUL要素がありました...それらの事柄のいずれかが真実でなければバグはしませんでした。

私が言うのは簡単です 「ああ、それはdomの問題でした」が、当時...いいえ、それほど簡単ではありません。

簡単には、いいえ。接続が遅く、複数のファイルがロードされる人は、まだ存在しない要素でスクリプトを実行しようとするブラウザに感謝しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top