Javascript window.onblur不工作
我似乎无法使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 = 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" );