6

window.onblurを正しく動作させることができないようです。

window.onblur = console.log('blur');

リスナーがウィンドウに適用されると、ページがロードされたときに実行されますが、ウィンドウのフォーカスが失われたときは実行されません。

4

3 に答える 3

24

Ryudiceはあなたに何をすべきかを教えてくれましたが、なぜそれがあなたのやり方でうまくいかなかったのか説明しませんでした。その仕組みを理解すると、さらに先に進む方法を理解するのに役立ちます。

その理由は、元のコードがコマンドをすぐに実行し、console.log('blur')その呼び出しの戻り値をウィンドウのonblurイベントとして使用しているためです。

の戻り値はconsole.log()ブラウザによって異なりますが、議論のために、ブール値を返すとしましょうtrue。これは、元のコードがこれを書くことと同等であることを意味します。

window.onblur = true;

これは明らかに期待どおりに機能しません。

必要なのは、イベントがトリガーwindow.onblurされるたびに呼び出される関数に設定することです。これは、Ryudiceの回答に従ってonblur、コードをでラップすることによって実現されます。function() {}

呼び出したい関数名に角かっこを付けないことで、簡単なケースでそれを実現することもできます。ただし、このメソッドは、関数に渡したい引数がない場合にのみ機能するため、console.log例には適していません。

お役に立てば幸いです。それでも困惑している場合は、Web上にたくさんのリソースがあります。「JavaScriptが関数を引数として渡す」などのフレーズをグーグルで検索して、何が表示されるかを確認してください。

于 2012-04-28T21:22:24.927 に答える
23
window.onblur = function() { console.log('blur'); }
于 2012-04-28T06:27:40.360 に答える
1
window.onblur = () => console.log( "blur" );
于 2015-10-22T20:12:51.193 に答える