2012-12-11 149 views
0

我正在檢測鼠標是否按照此答案中指定的方式離開窗口:How can I detect when the mouse leaves the window?如何在鼠標進入iframe時防止文檔鼠標事件被觸發?

問題是,當鼠標進入iframe(在我的情況下是嵌入的Youtube視頻)時,瀏覽器觸發此事件。

我該如何預防?

謝謝!

+0

嗯,我不認爲你可以直接與你將不得不申請某種黑客或解決方法。根據定義,iframe是一個不同的窗口...讓我想一想。 – Ryan

回答

0

您只需修改的處理程序是這樣的:

addEvent(document, "mouseout", function(e) { 
    e = e ? e : window.event; 
    var from = e.relatedTarget || e.toElement; 

    // we will check if this won't be iframe 
    var to = e.target || e.srcElement; 
    if ((!from || from.nodeName == "HTML") 
     && to.nodeName !== "IFRAME") { 
     console.log('mouse out') 
    } 
}); 

編輯新增e.srcElement選項,以支持IE

+0

你知道這個解決方案是否是跨瀏覽器嗎? – dirtv

+0

這主要工作(至少在Firefox中)。但是,當鼠標快速通過iframe並返回到文檔中時,似乎仍然存在一些誤判。 – dirtv

+0

我現在無法測試它,但我確定'e.srcElement'將與IE兼容。我編輯了這篇文章。隨着鼠標快速移動,它不會爲我觸發任何事情,你是怎麼做到的? –