ブログパーツを作っています。
window.onloadを使って、ページの読込みが完了したらある処理を開始するというものを考えていますが、
もし、そのページに他のブログパーツなどがあり、window.onloadを使用している場合
上書きしてしまう、または上書きされてしまうということが起こってしまうかと思います。
既に複数の勝手なブログパーツが貼り付けられたページで
他に影響を与えず、確実にonloadイベントを取得する方法はありますか?
該当のスクリプトは、windows.onload が現在設定されているかを調べ、設定されていなければそのまま xxxx.init という関数を設定。設定されていれば、「それを実行してから xxxx.init を実行する」という新たな関数に置き換えています。
http://www.w3schools.com/jsref/jsref_onload.asp
imgにも設定できるので、ダミーでも画像を置いたらどうでしょう。
<img src="hoge.gif" onload="hogefunc()" >
画像の読込みの完了=ページの読込みが完了
これは成り立ちますか!?
成り立たないように思います。
http://www.gesource.jp/programming/javascript/20050914.html
window.addEventListener(IEはattachEvent)を利用してはどうでしょうか?
これだと設定されたすべてのonloadイベントが実行されます。
イイです!
ありがとうございます。
http://www.gesource.jp/programming/javascript/20050914.html
/**
* イベントを追加する
*/
function addEventListener(target, type, func){
if(target.attachEvent){
target.attachEvent("on" + type, func);
}else if(target.addEventListener){
target.addEventListener(type, func, true);
}else {
target["on" + type] = func;
}
};
イベントを追加するのでしたら上記のような関数を用いてはどうでしょうか
上書きせずにイベントを追加できます(クロスブラウザ対応)
bodyのonloadでしたら
addEventListener(document.body,"load",onload時に実行したい関数)
で追加できます
イイです!
ありがとうございます。
自分のブログパーツはBodyの最終に置かれるとは限りません。
この方法を使ったとして
自分のブログパーツよりもあとで
onloadを実装するブログパーツがあった場合
上書きされてしまいませんか?