有一个类似的问题在这里。但是,当页面初始加载时,它不起作用,因为如果例如用户在新标签页中打开该页面并且没有获得焦点,则模糊事件不会触发。
那么最好的方法是什么?
目前,我的临时解决方案是假设选项卡在加载时被模糊,并将函数绑定到文档的mouseover事件上,以将其设置为聚焦状态。 但是,如果用户没有将鼠标放在页面上,则无法正常工作。
有一个类似的问题在这里。但是,当页面初始加载时,它不起作用,因为如果例如用户在新标签页中打开该页面并且没有获得焦点,则模糊事件不会触发。
那么最好的方法是什么?
目前,我的临时解决方案是假设选项卡在加载时被模糊,并将函数绑定到文档的mouseover事件上,以将其设置为聚焦状态。 但是,如果用户没有将鼠标放在页面上,则无法正常工作。
<div id="blurDiv"></div>
<script>
var updateStatus = (function() {
// Private stuff
var el = document.getElementById('blurDiv');
// The updateStatus function
return function (evt) {
evt = evt || window.event;
var evtType = evt.type;
var state;
// Determine state
if (evtType == 'load' || evtType == 'blur' || evtType == 'focusout' ) {
state = 'blurred';
} else {
state = 'focussed';
}
// Now do something...
el.innerHTML += '<br>' + state
};
})();
window.onload = updateStatus;
if (/*@cc_on!@*/false) { // check for Internet Explorer
document.onfocusin = updateStatus;
document.onfocusout = updateStatus;
} else {
window.onfocus = updateStatus;
window.onblur = updateStatus;
}
</script>
IE似乎会触发很多额外的事件,每次焦点变化时,都会先失去焦点再获得焦点,因此在页面上单击某些元素时会产生许多无关的失去/获得焦点对。