外部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年の間に、なんか色々便利になっているっぽい。。。
悩んでいた数日間に読み漁ったリンク
- 遅いブログパーツを高速表示する方法-わかったブログ
- document.write を非同期コードに置き換える « ゆっくり...して...イってネ!
- document.writeを使った遅いブログパーツ(例えばzenback)を非同期化してサイトを高速表示する方法 | ゆっくりと...
- IT戦記 - JavaScript を学ぶ際に一番重要なのに、誤解されがちなsetTimeout 系の概念
- ソーシャルボタンはお友達さ(・ω | MOL
- document.writeでSCRIPTを書き出すなやで! | MOL
- JavaScript TUEEEEEEEってなるdocument.writeのテクニック- あさdev
- Webサイトの表示速度が遅いと悩んだときに読みたい高速化の方法まとめ8つ - コメンター
おまけ
OpenXの導入 - IT memorandum
Adsenseのリセラープログラムを利用している広告配信サービスはコレを使っているんですねえ。私もGeniee さんでお世話になっているけど、今まで気が付きませんでした。