簡體   English   中英

如何在舊IE中調度鼠標滾輪事件

[英]How to dispatch mouse wheel event in older IE

我想在IE8中創建並觸發/發送mousewheel事件,我可以在事件處理程序中跟蹤它。

在IE8 document.createEvent == undefined ,所以試過這個但沒有成功:

var evt = document.createEventObject();
view.fireEvent('onMouseWheelEvent');

我想在IE7~9中開火和聽鼠標滾輪事件。

任何指針都會有所幫助,謝謝。

您需要將參數中的事件對象傳遞給fireEvent,而不僅僅是事件類型。

var evt = document.createEventObject();
view.fireEvent('onMouseWheelEvent', evt);

檢查document.createEvent if(document.createEvent)存在if(document.createEvent)並執行上述或

var evt = document.createEvent('MouseWheelEvent');
evt.initMouseWheelEvent( evt, true, true );
view.dispatchEvent( evt );

有關更多參數,請參閱http://msdn.microsoft.com/en-us/library/windows/apps/hh453179.aspx

這在IE 8和FireFox中對我有用:

var triggerButton = document.getElementById("triggerMouseWheel");

triggerButton.onclick = function() {
    if (document.createEvent) {

        var mouseEvent = document.createEvent('MouseEvent');
        mouseEvent.initMouseEvent(
            'DOMMouseScroll',
            true, true, window, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, null
        );
        document.dispatchEvent(mouseEvent);

    } else if (document.createEventObject) {

        var mousewheelEvent = document.createEventObject(window.event);
        document.fireEvent("onmousewheel", mousewheelEvent);

    }
}

我相信使用createEventObject的第二部分在IE8及以下版本中使用。

我用來添加事件處理程序的代碼也在下面供參考:

function addMouseWheelEvent(element, mouseWheelHandler) {
    if (element.addEventListener) {
        // IE9, Chrome, Safari, Opera
        element.addEventListener("mousewheel", mouseWheelHandler, false);
        // Firefox
        element.addEventListener("DOMMouseScroll", mouseWheelHandler, false);
    }
    // IE 6/7/8
    else element.attachEvent("onmousewheel", mouseWheelHandler);
}

addMouseWheelEvent(document, function() { alert("triggered"); });

就IE8支持而言,看起來好像你可能運氣不好。 我找到了相當多的證據( 微軟/谷歌MozillaFacebook )IE8以這樣一種方式實現鼠標滾輪/滾動事件的處理,你無法解決它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM