2013-04-17 135 views
0

我想下面的代碼同時針對IE和Opera如何在Opera上捕捉onmousewheel事件?

window.onload = function() { 
    document.attachEvent("onmousewheel", function() { 
     console.log("mousewheel detected"); 
    }); 
}; 

然而,歌劇院(11.11)沒有任何反應都沒有。

我試過谷歌這個,但沒有得到任何有用的信息。 Opera甚至支持鼠標滾輪事件嗎?

組合心中已經試過......

attachEventaddEventListenermousewheelonmousewheelDOMMouseScroll

更新

OK,mousewheel事件不被逮住的戲,問題是,我的Opera的控制檯不打印任何東西。 alert工程。

+0

['的addEventListener()'](https://developer.mozilla.org/en-US/docs/Talk:DOM/element.addEventListener)? – PeeHaa

+0

@PeeHaa?不是FF和Webkit的'addEventListener'? – user1643156

+0

不是。 'addEventListener'適用於所有體面的瀏覽器 – PeeHaa

回答

0

您需要處理所有瀏覽器的兼容性,而不是切換到可能打破其他問題的解決方案。驗證您是否可以使用解決方案的最簡單方法是「if」。

在這種情況下,您可以使用2種解決方案。 addEventListener & attachEvent。

var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x 

if (document.attachEvent) //if IE (and Opera depending on user setting) { 
    document.attachEvent("on"+mousewheelevt, function(e){alert('Mouse wheel movement detected!')}) 
else if (document.addEventListener) { //WC3 browsers 
    document.addEventListener(mousewheelevt, function(e){alert('Mouse wheel movement detected!')}, false) 

Source

+0

這是我在這裏使用的代碼。看到我的更新,這是因爲Opera的控制檯不打印任何東西,我的壞。不管怎麼說,還是要謝謝你。 – user1643156