— boreal-kiss.com

[JavaScript]Google Adsenseの遅延ロード

さっきGoogle Adsenseのサーバーが意外と長いこと落ちてたみたいで、このサイトもGoogle Adsenseのコード読み込めずにそこでページの表示がとまってやんの。こりゃいかんと思って手元のJavaScriptの本見てたら「defer(遅延)という属性を書くと、そのスクリプト部分の読み込みがその他のページコンテンツが読み込み完了するまで後回しにされる」って書いてあったから便利と思って試しにページの頭に


<script type="text/javascript" defer="defer">
alert("hello, world");
</script>

て書いて表示させてみたら、いきなり「hello, world」って出るんですけど(Mac Firefox)!Firefoxがダメなだけ?というかGoogle Adsenseはコード改変するのダメっぽいのでこの方法は結局使えない。調べてみると遅延描画ライブラリなんてものがあるらしい。これでGoogle Adsenseの表示問題は一応解決できそう。

よく考えたら自分とこのブログパーツも外部JavaScriptファイルとして読み込んでもらってるんだけど同じようなサーバーダウン時の対処を何も施してない。jsファイルの読み込みを遅延するいい方法はないのかな。こっちのホストサーバー落ちたら、ブログパーツ貼付けてるユーザーのサイトの表示に問題が生じるわけだから無視はできない。うちCoreserverだから超心配。例えば


<script type="text/javascript">
window.onload = function(){
処理内容
}
</script>

みたいに書いておけばページ読み込み完了まで実行が延期できるけど、もしこのスクリプトを書いてあるjsファイルそのものがサーバーダウンで読み込めなかった場合の対処にはならんよね。ファイルそのものが読み込めてないんだから。うーむ。

追記(2008/03/06):IEではdefer属性で遅延実行可能らしい。Mac Firefoxじゃ遅延せんかった。

* IEでは確かにHTMLのHello World!!が出た後に数秒後(ここでは2秒)にalert(“Hello World!!”);
* fxなどでは2秒間待たされた後にalert(“Hello World!!”);してその直後にHello World!!が描画されている。

script要素のdefer属性の実装 – Thousand Years

追記(2008/03/07): defer=”defer”付けたらブログパーツがIE7で表示されなくなった。何で!

0 comments
Submit comment