fireEvent('点击')在IE11中无效 - Extjs

时间:2016-02-08 06:18:54

标签: extjs extjs5

我计划在用户按空格键时以编程方式触发点击事件。我已经使用过fireEvent('点击')它正在使用chrome,但它不适用于IE-11。我也试过,针对IE的dispatchEvent但它抛出一个错误:"元素不支持方法或属性dispatchEvent"。请遵循以下代码。

onCustomRender: function(thisEl, args){
    var fetchTrigger = thisEl.getTrigger('fetchID
    fetchTrigger.el.on('keydown',function(e,thisEl){
            if (e.keyCode === 32) {

                //fetchTrigger.el.fireEvent('click');  //this is working in chrome //not working in IE and did not throwing error.

                var evObj = document.createEvent('MouseEvents'); 
                evObj.initEvent('click', true, false); 
                fetchTrigger.el.dispatchEvent(evObj);
            }
      });
}

请帮助 在此先感谢

1 个答案:

答案 0 :(得分:0)

首先,您提供的代码中存在语法错误... 直接调用函数是最简单的(如Evan所说),但是如果你想保持控制器中的逻辑,你可以触发事件。否则你需要一些丑陋的代码来获得控制器,然后调用方法......

如果你不需要,我不喜欢激活事件并在'Ext.dom.Element'上附加监听器。只需使用你的ext元素..

以下是我要做的事情:

onCustomRender: function(thisEl, args){
    var fetchTrigger = thisEl.getTrigger('fetchID');
    fetchTrigger.on('keydown',function(trigger, e){
        if (e.keyCode === 32) {
            trigger.fireEvent('click', trigger);  
        }
    });
}

甚至更好,使用控制器:

实现侦听器

init: function () {
    this.control({
        '#fetchID': { //you can optimize the componentQuery
            keydown: this.onTriggerKeyDown,
            click: this.onTriggerClick
        }
    });

},

和这样的方法:

onTriggerKeyDown: function(trigger, e){
    if (e.keyCode === 32) {
        this.onTriggerClick(trigger);
    }
},
onTriggerClick: function(trigger) {
    //do you thing!
}