[Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
来源:互联网 发布:金山打字mac 编辑:程序博客网 时间:2024/04/29 19:58
前言
先大致描述一下状况:
实现的功能是:
1.使用Ext 的tab Panel 创建了一些 tab ,
2. 在某个子tab 下又嵌套了一个tab Panel .
3. 在某个孙子的tab 下加了一个Form, Form 里面放置了一些ComboBox 和DateField.
出现的问题是:
IE 在某些操作顺序下, ComboBox和DateField 后面的trigger 无法点击。(这个顺序基本上是, 先进入Form 这个tab 是可以的, 切换到其他tab 后, 再会在Form 的这个tab 就会出错了)
代码重现
两个文件 maintab.html 和 subtab.html . 放入web server 下看效果(因为使用到了loader)
maintab.html
<!-- Author:oscar999 --><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript" src="../lib/extjs/ext-all.js"></script><link href="../lib/extjs/resources/ext-theme-neptune/ext-theme-neptune-all.css" rel="stylesheet" type="text/css" /><script>Ext.onReady(function(){Ext.create('Ext.tab.Panel', { renderTo: 'topTabs', width: 600, id: 'tabPanel', height: 800, margin: '100 0 0 200', bodyPadding: 10, border: 100, items: [{ title: 'Approval History1', html : 'A simple tab1', '$tab-margin': '0 0 0 20px' }, { title: 'Approval History2', id:'dynamicTab', loader:{ url: 'subtab.html', scripts:true, contentType: 'html' } , listeners: { activate: function(tab) { //TO-DO tab.loader.load(); } } }, { title: 'Approval History3', html : 'A simple tab3' }]}); });</script></head><body> <div id="topTabs"></div></body></html>
subtab.html
<!-- Author:oscar999 --><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>sub tab</title></head><body><div id="subtabs"></div><script> var form = Ext.create("Ext.form.Panel", { //frame: true, id:'subtabform1', width: "100%", height: "100%", bodyPadding: 5, fieldDefaults: { labelAlign: "left", labelWidth: 180 }, items:[{ xtype:'datefield', id:'sub1_field1', fieldLabel:'Select Date' },{ xtype:'combobox', id:'sub1_field2', fieldLabel:'Select Value' }] }); var form2 = Ext.create("Ext.form.Panel", { //frame: true, id:'subtabform2', width: "100%", height: "100%", bodyPadding: 5, fieldDefaults: { labelAlign: "left", labelWidth: 180 }, items:[{ xtype:'datefield', id:'sub2_field1', fieldLabel:'Select Date 2' },{ xtype:'combobox', id:'sub2_field2', fieldLabel:'Select Value 2' }] }); var tabpanel = Ext.widget("tabpanel", { renderTo: "subtabs", id: "subtabpanel", activeTab: 0, width: "100%", plain: true, defaults :{ autoScroll: true, bodyPadding: 10 }, items: [{ title: 'Sub Tab1', items:[form] },{ title: 'Sub Tab2', items:[form2] }] });</script></body></html>
解决历程
1. 从现象看, 切换tab 导致不能点击, 是否是div 层重叠导致?
使用IE Developer 改动div 的z-index , 问题还是依旧。
2. 是否是在IE中事件丢失了。
使用以下的方法测试,Ext.getCmp("sub1_field1").onTriggerClick();
发现是可以的。 说明事件还在。
3. 最后,想到是否是有旧的缓存的影响。
想到是否在父tab active 的时候, 把子tab destroy 掉。
listeners: { activate: function(tab) { if(tab.getId()=="dynamicTab"&&Ext.getCmp("subtabpanel")!=null) { Ext.getCmp("subtabpanel").destroy(); } tab.loader.load(); } }
发现是可以的。 看来的确是Ext 本身的对象有维持一些缓存。
看起来,问题是解决了。 不知道这是否算Ext js 针对 IE的一个bug.
这个缓存在其他浏览器中,是否会加快页面的速度。
所以综合一下, 解决方案是:
针对IE , 增加对子tab 的destroy 的操作。
其他浏览器,维持原状。
- [Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
- [Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Extjs之DateField控件的鼠标点击选取事件监控
- Ext Js 4的DateField的学习与实例
- 【IE bug 解决办法】IE下(IE10及以下)当元素为absolute定位时,点击事件失效的解决办法
- $.getJSON在ie下失效的情况
- [Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
- Ext.form.ComboBox 常用的事件和方法
- [Ext JS 4] 实战之 Picker 和 Picker Field
- js点击事件在ios中失效的3种解决方案
- Ext.form.DateField在chrome、safari下显示异常的解决方法
- Ext 遮罩层 在 IE 中 失效
- js处理document.referrer在IE下失效
- PyQt之按钮传递鼠标按下事件点击失效
- 【cognos 8教程第十六讲】URL后参数的含义
- 基本选择器,层次选择器
- VC文件扩展名解读大全
- 数据上传,下载功能(四)之插入数据QSqlQuery操作
- ubuntu下的adb安装
- [Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
- android 模拟器之 genymotion 鸟枪换大炮篇(专治各种疑难杂症)
- Linux下的platform总线驱动
- ICG技术专栏---双链路智能切换
- 基本过滤,内容过滤,可见过滤
- 在Linux下编译WebkitGtk
- 算法导论第四章4.1节代换法课后答案
- WinCE 控制面板的创建
- 关于矩阵最通俗的解释-超级经典zz