window.onload に関数をスタックする
addEventListener を使わないで、window.onload に直接関数を登録すると、既に登録されている関数がある場合上書きされてしまって困る場合がある。そんなときは以下のように書けばOK。
/** * window.onload に関数 func をスタックする */ function addOnLoad(func) { // window.onload に関数が登録済みか if (typeof window.onload == "function") { var _func = window.onload; window.onload = function() { // t: window.onload で登録済み関数を呼び、次に func を呼ぶ _func(); func(); } } else { // f: window.onload で func を呼ぶ window.onload = func; } }; /** * 何か意味のある関数 */ function hoge() { // 何か意味のある処理が書いてあることにする }; // 自分で定義した関数 hoge() を onload イベントに登録する addOnLoad(hoge);
ちなみに、多くのライブラリにはこの機能が既にあるらしいので、このようにわざわざ長たらしく書く必要は無いらしいけど、基本が大事ということでメモしてみた。