Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onblur不工作_Javascript_Window_Onblur - Fatal编程技术网

Javascript window.onblur不工作

Javascript window.onblur不工作,javascript,window,onblur,Javascript,Window,Onblur,我似乎无法使window.onblur正常工作 window.onblur = console.log('blur'); 当侦听器应用于窗口时,它只是在加载页面时运行,而不是在窗口失去焦点时运行。Ryudice已经告诉您该怎么做,但没有解释为什么它不能按您的方式工作。了解它的机制将帮助您了解如何进一步进行 window.onblur = function() { console.log('blur'); } 原因是您的原始代码正在立即运行console.log('blur')命令,并使用该调

我似乎无法使window.onblur正常工作

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

当侦听器应用于窗口时,它只是在加载页面时运行,而不是在窗口失去焦点时运行。

Ryudice已经告诉您该怎么做,但没有解释为什么它不能按您的方式工作。了解它的机制将帮助您了解如何进一步进行

window.onblur = function() { console.log('blur'); }
原因是您的原始代码正在立即运行
console.log('blur')
命令,并使用该调用的返回值作为窗口onblur事件

console.log()
的返回值在不同的浏览器中有所不同,但为了参数起见,假设它返回一个布尔值
true
值。这意味着您的原始代码相当于编写以下代码:

window.onblur = true;
这显然不会像你期望的那样起作用

您需要将
window.onblur
设置为一个函数,该函数将在每次触发
onblur
事件时调用。根据Ryudice的回答,这是通过将代码包装在
函数(){}
中实现的

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


希望有帮助。如果你还不明白,网上有很多资源。尝试在谷歌上搜索“javascript将函数作为参数传递”之类的短语,看看会出现什么结果。

现在。。。如果用户切换标签或点击地址栏,我如何让它工作?@charlesjohnthompsonii我想这可能会奏效,但你现在可能已经完全忘记了。我也遇到了类似的问题,这是我目前的解决方案。@charlesjohnthompsonii在MDN上签出页面可见性API。
visibiltychange
事件可能就是您想要的。@FlorianEck是的,它会的,这只是一个,它是JavaScript的标准部分(在ES6中添加,2015年)。
window.onblur = () => console.log( "blur" );