我似乎无法使window.onblur正常工作。
window.onblur = console.log('blur');
当监听器应用于窗口时,它只是在加载页面时运行,而不是在窗口失去焦点时运行。
答案 0 :(得分:22)
Ryudice告诉你该做什么,但没有解释为什么它不起作用。了解它的机制将有助于您了解如何进一步。
原因是您的原始代码立即正在运行 console.log('blur')
命令,并使用该调用的返回值作为窗口onblur事件。
console.log()
的返回值因浏览器而异,但为了参数,我们假设它返回一个布尔true
值。这意味着您的原始代码等同于编写此代码:
window.onblur = true;
这显然无法按预期发挥作用。
您需要将window.onblur
设置为每次触发onblur
事件时都会调用的函数。根据Ryudice的回答,这是通过将代码包装在function() {}
中来实现的。
通过不在要调用的函数名称上提供括号,您也可以在简单的情况下实现它。但是,只有当您没有要传递给函数的任何参数时,此方法才有效,因此不适合您的console.log
示例。
希望有所帮助。如果你仍然感到困惑,网上有很多资源。尝试谷歌搜索“javascript传递函数作为参数”之类的短语,看看会出现什么。
答案 1 :(得分:20)
window.onblur = function() { console.log('blur'); }
答案 2 :(得分:1)
window.onblur = () => console.log( "blur" );