ばかげた質問ですが、書くwindow.onload = alert('hi')
とアラートが表示されます。
ただし、その存在をテストすると、次のif (window.onload) alert("exists")
ようになりundefined
ます。どうして?
ばかげた質問ですが、書くwindow.onload = alert('hi')
とアラートが表示されます。
ただし、その存在をテストすると、次のif (window.onload) alert("exists")
ようになりundefined
ます。どうして?
メソッド (すぐに実行される) を呼び出し、alert
その戻り値 ( undefined
) を に代入していonload
ます。
関数を割り当てるonload
場合は、古い関数呼び出しの戻り値ではなく、実際の関数を割り当てる必要があります。
例えば:
onload = function () {
alert('hi');
};
また
function createHiAlertFunction() {
return function () {
alert('hi');
}
}
onload = createHiAlertFunction();
ただし、一般的に言えば、イベント ハンドラー プロパティに何かを割り当てることは避け、代わりにイベント バインディング メソッドを使用する必要があります。そうすれば、複数の関数を呼び出す必要がある場合でも、物事をジャグリングする必要はありません。
window.addEventListener('load', function () {
alert('hi');
});
これは旧式の IE ではサポートされていないことに注意してください。そのため、古い独自の Microsoft 方式のサポートを含む抽象化レイヤーを提供する多くのライブラリ (YUI や jQuery など) のいずれかを使用することをお勧めします。
window.onload
イベントを発生させます。デフォルトでは、値はありません。その値は、すべての準備が整ったときに何かを行う必要があるときに、ユーザーによって設定されます。値を設定しなかった場合は、undefined
次のことを試してください。
if(typeof window.onload !== "undefined") alert("exists!")
これは、オブジェクトに onload プロパティがあるかどうかを明示的にチェックしwindow
ます。
編集:
表示されているのundefined
は、アラート関数の戻り値です。
そのスクリプトはどこで起動しますか? window.onload が false を返す場合、ページが完全にロードされていないことを意味します。