外部Javascriptの「document.write」の遅延や非同期に挑戦し、そして断念した記録というかメモ。あと「document.write」の代替方法などを模索したり。
ほとんどリンク集。

基本はコレ

JavaScriptでHTMLをダイナミックに書き換える 前編 - @IT自分戦略研究所
「document.write」の代替方法としてはコレでOK。
でも上記の手法だと、外部Javascriptの「document.write」が全然反映されない。document.writeを含まないスクリプトなら、上手く作動する感じ。

 

色々悩んでいたけど、以下が原因みたい。

外部 script の document.write が何もしない条件などについて -ひだまりソケットは壊れない
この情報に辿り付くまで、自分のスクリプトに問題があるんじゃないかと3~4日もの間、頭を抱えてしまってた(^_^;

解決作

javascript - DOM時代のdocument.write()
javascript - 添削 - DOM時代のdocument.write()
javascript - 決定版 - DOM時代のdocument.write()
上記全て 404 Blog Not Foundより。やっぱDan Kogai氏はすげーな。

大抵のブログパーツ(ブログランキングや逆アクセス解析など)は、上記のスクリプトをかましておけば、Javascriptは並列でダウンロードされ、ページのレンダリングがストップすることは殆ど無い。

問題点

しかし、Adsenseに代表されるような「scriptで呼び出した先でdocument.write実行してその先でiframe呼び出して、更にその先で再びdocument.write実行して・・・」と延々と呼び出しがかかるscriptでは、エラーが出る(決定版ではエラーを回避して遅延読み込みを行わない)

Adsenseなどの場合はどうするか?

Google サイト運営者タグのサンプル - DFP Small Business ヘルプ
DFPサービスを利用すればこの問題が解決できるらしい。
DFPはサービス開始直後に利用していたけど、こんな便利なコードはまだ無かった。DFPを経由するとAdsenseの表示がスゲー重くなったのでスグに利用を辞めてしまった。

この2~3年の間に、なんか色々便利になっているっぽい。。。

 

悩んでいた数日間に読み漁ったリンク

 

おまけ

OpenXの導入 - IT memorandum
Adsenseのリセラープログラムを利用している広告配信サービスはコレを使っているんですねえ。私もGeniee さんでお世話になっているけど、今まで気が付きませんでした。