へぼいいいわけ このページをアンテナに追加 RSSフィード Twitter

2008年06月21日

onloadの代わりにDOMContentLoadedを使ってみる

onloadイベントだとDOMの構築が完了しても画像を読み込み終わるまで待ってしまうので、代わりにDOMContentLoadedイベントを使って処理させてみます。IEにはDOMContentLoadedがないのでdocument.documentElement.doScroll("left")を監視してDOM構築が終わるまで再帰しています。


参考

window.onloadの代替スクリプトその2

jQuery 1.2.6 2330行目くらい


そーす

※一部修正しました。

// DOM構築完了時の処理
function load(){
/*
なんかいろいろ
*/
};

// ユーザーエージェント
var userAgent = navigator.userAgent.toLowerCase();

// ページの構築が完了したらloadを呼び出す
(function(){
	if(document.addEventListener){ // opera,safari,mozilla向け
		document.addEventListener("DOMContentLoaded", load, false);
	} else if(/msie/.test(userAgent)){ // IE向け
		try {
			document.documentElement.doScroll("left");
		} catch(error){
			setTimeout(arguments.callee, 0);
			return;
		}
		load();
	} else { // その他
		window.onload = load;
	}
})();

jQueryのソースを見るとOperaとか古いsafari用に特別な処理がいろいろと書いてあるけど、自分の環境で動かしてみたところこれで特に問題はないようです。そういうのが気になる方はライブラリを使ったほうがいいんじゃないでしょうか。

なまえなまえ 2008/06/29 09:23 ここにいたのか管理人
がんばれやーい

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close