[英]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"); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.