簡體   English   中英

IE11上的fireEvent方法存在問題

[英]Problems with fireEvent methods on IE11

在Firefox / Chrome瀏覽器中使用jquery / javascript / Ext JS5模擬對此按鈕的單擊時,我有一個按鈕。 此按鈕將觸發事件,但是在IE11中執行相同操作時,事件不會觸發嗎? 有什么線索嗎?

單擊按鈕的方法如下:

// jquery
$('.buttonId').click(); // works
// javascript 
document.getElementById('buttonId').click(); // works
// ExtJS 5
var ok = Ext.ComponentQuery.query('button[itemId=buttonId]')[0];
ok.fireEvent('click', ok); // works

但不適用於IE11

我會用:

ok.dispatchEvent("click")

當然,您需要添加一些邏輯來檢測所用的瀏覽器,而不是fireEvent,以便如果IE <v11,則可以繼續使用fireEvent()。

請從Microsoft那里了解有關fireEvent的棄用以及建議用dispatchEvent()進行替換的信息:

https://msdn.microsoft.com/zh-CN/library/ff986080(v=vs.85).aspx

這是一個錯誤。 使用此替代,它應該可以工作!

小提琴示例: https : //fiddle.sencha.com/#fiddle/ls4

Ext.define('EXTJS-13775', {
    override: 'Ext.dom.Element'
}, function(Element) {
    var eventMap = Element.prototype.eventMap;

    eventMap.click = 'click';
    eventMap.mousedown = 'mousedown';
    eventMap.mouseup = 'mouseup';
    eventMap.mousemove = 'mousemove';
    eventMap.dblclick = 'dblclick';
    eventMap.mouseleave = 'mouseleave';
    eventMap.mouseenter = 'mouseenter';
});

這適用於所有瀏覽器。 假設我有一個名為(myDropDown)的選擇輸入

if ("createEvent" in document) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    myDropDown.dispatchEvent(evt);
}
else
    myDropDown.fireEvent("onchange");

另外,您可以在IE中引用fireEvent

暫無
暫無

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

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