Кажется, я не могу заставить window.onblur работать правильно.
window.onblur = console.log('blur');
Когда прослушиватель применяется к окну, он просто запускается при загрузке страницы, но не когда окно теряет фокус.
Кажется, я не могу заставить window.onblur работать правильно.
window.onblur = console.log('blur');
Когда прослушиватель применяется к окну, он просто запускается при загрузке страницы, но не когда окно теряет фокус.
Рюдис сказал вам, что делать, но не объяснил, почему это не сработало. Понимание механики этого поможет вам понять, как действовать дальше.
Причина в том, что исходный код запускает команду console.log('blur')
немедленно и использует возвращаемое значение этого вызова в качестве события окна onblur.
Возвращаемое значение console.log()
зависит от браузера, но в качестве аргумента допустим, что оно возвращает логическое значение true
. Это означает, что ваш исходный код эквивалентен написанию этого:
window.onblur = true;
Что явно не сработает, как вы ожидаете.
Что вам нужно, так это установить window.onblur
на функцию, которая будет вызываться каждый раз, когда запускается событие onblur
. Это достигается путем упаковки кода в function() {}
, согласно ответу Рюдиче.
Вы также можете добиться этого в простых случаях, не указывая скобки в имени функции, которую вы хотите вызвать. Но этот метод работает только в том случае, если у вас нет аргументов, которые вы хотите передать функции, поэтому он не подходит для вашего примера console.log
.
Надеюсь, это поможет. Если вы все еще озадачены, в Интернете есть множество ресурсов. Попробуйте поискать в Google такие фразы, как «передача функций javascript в качестве аргументов», и посмотрите, что получится.
visibiltychange
может быть тем, что вы ищете.
- person Govind Rai; 26.02.2018