読者です 読者をやめる 読者になる 読者になる

以下斜め読んだ内容

pseudo translation of useful posts, book reviews, remarks,etc. twitter: feeddict

S.Souders「“Delayed Script Execution” in Opera」

斜め読み

“Delayed Script Execution” in Opera

Steve Soudersのブログエントリ。
ウェブページのパフォーマンスアップとjsの遅延実行で生じる問題(document.write)、この問題へのOperaの解答(=実装)を紹介し高評価する、という主旨のエントリ。
Resigのエントリにコメントに降臨して紹介されてたので読んでみた。

ちなみにResigのエントリは、Souderの作ったツールUA Profilerの紹介が主旨

以下斜め読んだ内容
  • ページのパフォーマンスをアップさせる目的で、jsファイル内のコード実行を遅らせる手法
    • よくある
  • 実行を遅らせたjsファイルの中にdocument.writeがある場合
    • 問題になる。ページレンダリング開始後にdocument.writeを実行すると、ページ内容を破棄してしまうため。
    • イマドキのjs書きならdocument.writeは使わないけど、広告ではよく使われてる。だから問題
  • 非常にありがたいOperaの実装
    • htmlソース内のscript要素の位置をブラウザが覚えていて、レンダリング開始前でも後でも、その位置にdocument.writeが吐き出す内容を挿入してくれる。
      • 表示してるページを破棄しない。
    • 他の全てのブラウザでは、レンダリング開始後のdocument.write実行は、レンダリング中のページを破棄してる。
      • テストページで確認可能
  • 結論
    • 他のブラウザもOperaのような実装したほうがよい
  • 脱線
思ったこと

Soudersの指摘してる状況は、document.write使ってる広告が沢山あることに由来してると思う。
広告用に埋め込むjsの中にdocument.writeが無くなれば、この状況は改善するはず。
だけどそういう動きは期待できないから、ブラウザ側で対応してもらったほうが早いという考えなのか。