IE11上fireEvent方法的问题

时间:2015-04-23 14:32:02

标签: javascript jquery internet-explorer extjs

我在Firefox / Chrome浏览器中使用jquery / javascript / Ext JS5模拟单击此按钮时有一个按钮。这个按钮触发了它的事件,但是当在IE11中做同样的事情时,事件不会触发?任何CLUE?

以下是点击按钮的方法:

// 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

3 个答案:

答案 0 :(得分:3)

我会用:

Boolean MkDir(String directoryName)

而不是fireEvent,当然你需要添加一些逻辑来检测你所在的浏览器,这样如果IE< v11然后你可以继续使用fireEvent()。

请参阅Microsoft的有关fireEvent弃用的建议,并建议使用dispatchEvent()进行替换:

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

答案 1 :(得分:1)

这是一个错误。使用此覆盖,它应该工作!

示例小提琴: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';
});

答案 2 :(得分:0)

这适用于所有浏览器。假设我有一个名为(myDropDown)的选择输入

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

另外,您可以参考fireEvent in IE