1

http://www.quirksmode.org/dom/events/mousemove.html對IE8進行處理文檔,但沒有窗戶鼠標移動事件,但我目前有:在IE8和以前版本中如何處理mousemove?

try 
     { 
     document.onmousemove = drag.on_mouse_move; 
     } 
    catch(error) 
     { 
     if (typeof document.attachEvent !== undefined) 
      { 
      document.attachEvent("onmousemove", drag.on_mouse_move); 
      } 
     } 

第一個真正的語句拋出在IE8的錯誤,一樣的最後一條語句。後一個錯誤聲稱類型不匹配;前一個錯誤會引發「未執行」。如何在IE8(/ 7/6)中註冊一個mousemove事件監聽器?

+0

也許你可以製作[jsfiddle](http://jsfiddle.net)? –

+0

爲什麼要處理這個問題時,jQuery爲您處理跨瀏覽器問題,特別是如果你正在處理舊瀏覽器! – frenchie

+2

它傷心如何純粹JS失去了贊成「只使用jQuery」...... – MalSu

回答

4

你不應該支持IE6,就算MS放棄了那個瀏覽器,謝天謝地。我剛剛在IE8中試過以下代碼:

if (document.attachEvent) 
{ 
    document.attachEvent('onmousemove',function(e) 
    { 
     e = e || window.event; 
     alert(e.type); 
    }); 
} 

而且它的工作方式就像一個魅力。只是一個提示:正常的try-catch順序是:

try 
{//FF, webkit, opera, IE>8 
    document.addEventListener('mousemove',function(){},false); 
} 
catch (e) 
{//IE >6 (7?) 
    document.attachEvent('onmousemove',function(){}); 
} 
finally 
{//browsers that must die 
    try 
    { 
     document.onmousemove = function(){}; 
    } 
    catch(die) 
    { 
     alert('Use a decent browser.'); 
     location.href = 'http://www.mozilla.org/en-US/firefox/new/'; 
    } 
} 

的attachEvent用於委託,這是要優於直接結合在大多數情況下。

+0

我的5美分http://msdn.microsoft.com/en-us/library/ie/ms536947( v = vs.85)的.aspx – Faiz