document.writeがイベントタイミングによって挙動が違う

document.writeがイベントタイミングによって挙動が違う
■ 店頭より得で、予約しやすいオンラインショップ。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE

無名関数で書いてみましょう

// *実行結果
// 〜画面表示〜
// hoge!

これは正常に表示されました。

setTimeoutではどうでしょう?

// *実行結果
// 〜画面真っ白〜
// hoge!

画面が表示されてから、5秒後に、またもやホワイトアウト!!

検証結果

どうやら、settimeoutは、ページロード後に行われているので、どうやら、ページがonloadを境に、document.writeの挙動が変わっているのではないかと推測。

対応策

この結果を元に、商品設計をする際は、

・onload前では、document.writeを使ってOK
・onload後では、document.writeの使用がNG

と考え、以下の様なプログラムが最適と考えました。

# 外部JSをファイル”hoge.js”

■最新のiPhoneの購入・機種変更なら店頭より得で、予約しやすいオンラインショップ。
機種の頭金や使わないオプションパックをつけて年間何万円も損していませんか?
オンラインショップなら故障のサポートもしっかりしていて最低限の費用。待たされることもありません。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE
がお得です。