我们的应用程序使用ExtJs,在4.1.3版中,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();
        }
    });
});


在上述测试案例中,可以通过以下步骤检查此问题:


在IE中加载页面,然后单击“打开窗口”按钮以打开窗口
在第一个文本字段中单击以将其聚焦,这将在控制台中打印一条语句-“聚焦第一字段”
现在关闭此窗口,然后通过按钮再次将其打开
单击第一个文本字段-现在,什么都不会打印到控制台-焦点事件根本不会触发。


我已经检查并发现“焦点”和“模糊”事件没有触发,但“更改”事件每次都触发。

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

我发现,如果从文本字段中注释了“ id”,则一切正常。但这很奇怪。 “ id”如何与听众发生冲突?这是一个错误吗?

请注意,不会引发任何错误。同样,窗口将被破坏,元素将被重新创建。

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

另外,当我使用4.1.1之前的版本进行测试时,我发现IE也可以正常工作。

对这个人有什么想法吗?

预先感谢您的帮助。

最佳答案

最终,该错误在版本4.1.2和4.1.3中被接受为错误。可以解决的替代可以是checked on this link.

09-27 12:07