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