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设置一个函数,每次onblur触发事件时都会调用该函数。function() {}根据 Ryudice 的回答,这是通过将代码包装在 a 中来实现的。

您也可以在简单的情况下通过不在要调用的函数名称上提供方括号来实现它。但是这种方法仅在您没有任何要传递给函数的参数时才有效,因此不适合您的console.log示例。

希望有帮助。如果您仍然感到困惑,那么网络上有很多资源。尝试在谷歌上搜索“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 回答