window.onblur не работает

Я не могу заставить окно работать нормально.

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

Когда слушатель применяется к окну, он просто запускается при загрузке страницы, но не тогда, когда окно теряет фокус.

3 ответа

Решение
window.onblur = function() { console.log('blur'); }

Рюдице сказал вам, что делать, но не объяснил, почему это не сработало. Понимание механизма этого поможет вам понять, как действовать дальше.

Причина в том, что ваш оригинальный код работает console.log('blur') немедленно, и используя возвращаемое значение этого вызова в качестве события onblur окна.

Возвращаемое значение console.log() варьируется между браузерами, но ради аргумента, допустим, он возвращает логическое значение true значение. Это означает, что ваш оригинальный код эквивалентен написанию этого:

window.onblur = true;

Что явно не сработает, как вы ожидаете.

Что вам нужно для window.onblur быть установлен на функцию, которая будет вызываться каждый раз, когда onblur событие сработало. Это достигается путем упаковки кода в function() {}согласно ответу Рюдице.

Вы также можете добиться этого в простых случаях, не указав скобки в имени функции, которую хотите вызвать. Но этот метод работает, только если у вас нет аргументов, которые вы хотите передать в функцию, поэтому он не подходит для вашего console.log пример.

Надеюсь, это поможет. Если вы все еще озадачены, есть много ресурсов в Интернете. Попробуйте поискать в поиске фразы, такие как "функции передачи javascript в качестве аргументов", и посмотрите, что произойдет.

window.onblur = () => console.log( "blur" );
Другие вопросы по тегам