[英]How to tell when the IE8 window loses focus?
我一直在使用它,盡管直到最近我才意識到它在ie8中無法正常運行。
$(window).blur(function () {
alert("lost");
});
在Firefox,Chrome或Safari中,當窗口失去焦點時,這會適當地導致顯示警報。 但是,在IE8中,警報似乎已放入某種隊列中。 警報“丟失”僅在窗口重新獲得焦點時顯示。 更令人困惑的是,當與跟蹤窗口是否獲得焦點的事件結合使用時,它們會混亂。
$(window).focus(function () {
alert("gained");
});
(請勿在chrome或Firefox中嘗試此操作,因為警報會進入某種循環)
如果這兩個都與IE8,當窗口失去焦點,並重新獲得其使用,IE8警報“獲得了” ok
“丟失”。 這種亂序事件觸發會導致我的代碼問題,因為它是向后的,並報告最后一個事件是瀏覽器失去焦點。
如何在IE8中跟蹤此內容?
方法的功勞: https : //stackoverflow.com/a/10999831/1026459
我的情況的解決方案:
document.onfocusout = function(){
alert("lost");
};
這實際上控制了一個時間間隔,但這不是重點。 onfocusout
適用於ie8,
chrome,safari和ff
。 我不確定ie8出現什么blur
問題,但我正在逐步淘汰它。
編輯
不幸的是document.onfocusout在chrome或safari中不起作用,所以我不得不做更多的解決方法。 這就是我最后得到的。
//ie workaround
document.onfocusout = function(e){
if( e === undefined ){//ie
var evt = event;//ie uses event
if( evt.toElement == null ){//check where focus was lost to
console.log("lost");
}
}
};
window.onblur = function(e){
if( e !== undefined ){//ie will have an undefined e here, so this screens them out
console.log("lost");
}
};
$(window).focus(function () {
console.log("gained");
});
在IE8中將其復制后,我測試了Mathias Bynens的頁面可見性填充程序是否起作用,並且似乎可以解決您的問題。 您可以在此處下載: http : //mths.be/visibility 。
我確實對測試代碼做了一些更改,以避免進入警報循環。
$(document).on({
'show.visibility': function () {
$(document.body).append(new Date().getTime() + '<br/>');
},
'hide.visibility': function () {
$(document.body).append(new Date().getTime() + '<br/>');
}
});
還要注意,這與$(window).blur()
和$(window).focus()
行為稍有不同,在大多數瀏覽器(IE之外的其他瀏覽器$(window).focus()
,只要用戶單擊窗口元素外,它$(window).focus()
激活僅當用戶無法再看到窗口時(例如,切換選項卡或最小化瀏覽器,而切換到其他應用程序或監視器時,才激活)。 我個人比較喜歡這種行為,因為我不想在我仍在觀看但要與其他應用程序交互時更改網站。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.