document.writeの3乗

昨日今日と、

  1. PV集計用のscriptタグを貼る
  2. PV集計は出来るようにリクエストは飛ばさせる
  3. scriptタグが表示するバナーは隠す

っちゅー作業をしてました。


単純に考えて、PV集計用のscriptタグをdocument.writeしている
javascriptの処理が書かれているscriptタグをdivでくくって、
style="display:none"にしてやればいいかと思いましたが、
FirefoxOperaはともかくIEだと上手く隠れてくれません。


何でかと思って、DOMインスペクタで見てみると、
バナーの親要素がFirefoxのときと違うんです。
さっき言ったdivやら何やらのhtmlも、ブログパーツなので、
(自動変換ですが)さらに、document.writeで括られてます。
どうやらIEの場合、document.writeの中でさらにdocument.writeをやると、
そこで出力されたタグの親要素は、一番外側のdocument.writeが記述された
scriptタグの親要素になるようなんです。


で、結局こんな風にしました。

  1. divの一つ前にstyle="display:none"のiframeを置いてやる
  2. UAIEの時のみ、上記iframeをid指定で取ってきて、こいつのdocumentでwriteしてやる


とりあえず問題は解決しましたが、これでいいのか微妙な感じ、
そもそもdocument.writeが3段も入れ子になってるのってどうなのよ?