为什么在ExtJs 4.1.3中,textfield id与IE中的监听器冲突?

为什么在ExtJs 4.1.3中,textfield id与IE中的监听器冲突?

问题描述:

我们的应用程序使用ExtJs和版本4.1.3奇怪的行为正在IE中显示。为什么在ExtJs 4.1.3中,textfield id与IE中的监听器冲突?

问题是,如果我们打开窗口的窗体只有少量文本框/组合框,并且在关闭一次后重新打开此窗口,则应用于文本框/组合框的焦点/模糊侦听器将停止工作。

以下是对这一问题的测试用例:

Ext.onReady(function(){    
    function getForm(){ 
     var form = { 
      xtype:'form', 
      width:550, 
      items:[ 
       { 
        xtype:'textfield', 
        flex:1, 
        fieldLabel:'test1', 
        id:'disabledFieldId', 
        itemId:'disabledFieldId', 
        listeners:{ 
         focus:function(){ 
          console.log('focus first field'); 
         }, 
         blur:function(){ 
          console.log('blur first field'); 
         }, 
         change:function(){ 
          console.log('change first field'); 
         } 
        } 
       }, 
       { 
        xtype:'textfield', 
        flex:1, 
        fieldLabel:'test2' 
       } 
      ] 
     }; 
     return form; 
    } 
    Ext.create('Ext.Button', { 
     text: 'Open Window', 
     renderTo: Ext.getBody(), 
     handler: function() { 
      var win  =  Ext.create('Ext.window.Window',{ 
       modal:true, 
       items:[ 
        getForm() 
       ], 
       width:550, 
       height:200 
      }); 
      win.show(); 
     } 
    }); 
}); 

在上面的测试情况下,这个问题可以通过以下步骤进行检查:

  1. 加载网页在IE和点击“打开窗口”按钮打开窗口

  2. 单击第一个文本框来关注它,这将打印一个语句 - “首先关注焦点场” - 在控制台

  3. 现在再次从按钮,在第一文本框关闭此窗口,然后打开它

  4. 点击 - 现在,什么都不会被打印到控制台 - 焦点事件不会在所有火。

我已检查并发现'焦点'和'模糊'事件不会触发,但'更改'事件每次都会触发。

如果我们重新加载整个页面,然后打开窗口,那么事件将再次开始触发。但在这种情况下,也只有一次。

我发现如果'id'是从textfield注释,那么事情开始工作正常。但是这很奇怪。 'id'如何与听众冲突?这是一个错误?

请注意,没有错误被抛出。此外,窗口正在被破坏,元素正在重新创建。

我在Chrome和Firefox中也测试了这一点,并发现这种行为仅在IE中发生(在IE9中以文档和浏览器模式设置为标准进行检查)。

另外,当我测试版本高达4.1.1,我发现事情与IE浏览器也能正常工作。

对这个人有什么想法?

感谢您的帮助。

+0

我不知道为什么,但我可以给你一个修复:设置属性CloseAction'隐藏',以防止DOM破坏然后用按钮不创建窗口,但显示并创建页面加载 – Vogel612 2013-02-27 13:40:27

+0

@ Vogel612:谢谢但隐藏会在我们的应用程序中创建许多新问题,所以不能这样。 – netemp 2013-02-27 13:42:46

+0

好吧,这与我的问题有关,但我想你是对的。需要从头开始了解使用哪种机制。顺便问一下,你确定你不能通过两次点击按钮来创建两个窗口?只要设置了id,监听器的id将只能在第一次提到id时使用,与类 – Vogel612 2013-02-27 13:49:06

这终于被接受为版本4.1.2和4.1.3中的一个bug。可以解决它的覆盖可以是checked on this link.