我们的应用程序使用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.