2016-02-08 140 views
-1

我打算在用戶按空格鍵時以編程方式觸發點擊事件。我已經使用fireEvent('click')它正在爲chrome工作,但它不適用於IE-11。我也試過,爲IE的dispatchEvent,但它拋出一個錯誤:「元素不支持方法或屬性dispatchEvent」。請按照下面的代碼。fireEvent('click')在IE11中不工作 - Extjs

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); 
      } 
     }); 
} 

請幫助 由於提前

+2

爲什麼?只需調用你想要直接運行的函數即可。 –

+0

謝謝多數民衆贊成在工作 –

回答

0

首先,你有你所提供的代碼語法錯誤...... 調用函數直接最容易(如埃文說),但如果你想保持控制器中的邏輯可以觸發事件。否則,你需要一些難看的代碼才能獲得控制器,然後調用該方法...

如果您不需要,我不喜歡在'Ext.dom.Element'上激發事件並附加偵聽器。只需使用你的分機元素..

這裏是我會做什麼:

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! 
} 
+0

謝謝多數民衆贊成在工作 –