2

学習を含むさまざまな理由で、小さなjavascriptフレームワークを作成しています。

したがって、「ドキュメント対応」機能を実装したかったのでDOMContentLoaded、IE<9でjQueryがどのように偽造されるかを確認しました。

問題は、正常に機能していないように見えることです。IE8と優れたブラウザでこのフィドルを確認してください。

ロジックは次のとおりです。cssを適用してdivを赤で開始し、「準備完了」で青に、ロード時に緑にします。さらに、偽のURLを含む3つのimgタグがあるため、準備完了と読み込みの間に総合的な遅れが生じます。

何が起こるべきか:
もしあったとしても、divは一瞬以上赤く表示されるべきではありません。理想的には、最初に表示されるのは青色である必要があります。次に、ブラウザが無効な画像でタイムアウトすると、緑色になります。

IE8で何が起こるか:
すべての画像が「ロード」されるまで(この合成例ではタイムアウト)、divは赤のままで、その後緑になります。

繰り返しになりますが、私は正確に修正を求めているわけではありません。フレームワークがIE8でこのように動作するのが正しいかどうか(IE 6-7はもう気にしません)、またはこれが起こっているかどうかを尋ねています。なんらかの方法でjQueryを誤用したためです。

PS:私はイベントを手動でバインドする方法を知っています、これが予想される/許容できる/バグ/私の間違いであるかどうかについてもっと尋ねています。

4

1 に答える 1

5

I'm going to go with working as intended.

jQuery is using the document.readyState for browsers that don't support DOMContentLoaded. document.readyState only equals complete when the page's resources are done loading.

https://developer.mozilla.org/en-US/docs/DOM/document.readyState

There's probably a good reason why they aren't doing it on "interactive", but I'm not positive on that.

Edit: Here's your updated fiddle with a event on document.readyState == interactive

http://jsfiddle.net/PFWmS/7/

It works in both IE7 and IE8

Edit

The reason that jQuery doesn't use "interactive" is because that fires too early in IE9.

http://bugs.jquery.com/ticket/12282#comment:25

I'm thinking there may be a better way of handling that which results in IE7 and 8 proper ready timing while still working properly in IE9

于 2012-10-03T19:15:01.553 に答える