`
KeepCrazy
  • 浏览: 60918 次
社区版块
存档分类
最新评论

几个ExtJs浏览器差异问题的解决办法

阅读更多

    今天花费了很多时间处理上星期完成的ExtJs 3+java程序中存在的浏览器差异性问题。
    首先是JSON.parse问题。 FF有这个对象,  但IE中没有。以eval()方法代替。
    然后是字体大小问题,若不做任何CSS上的修改,火狐字体显示大小刚好, 但chrome和IE的字很小。在百度上找到的方法是修改extjs-all.css文件:把所有的11px替换成12px,因为11px是一个边缘尺寸, 两个浏览器显示的大小有差异。问题解决。
    还有grid的行高。方法也是在百度上找的:添加并引用css:
.x-grid3-row td,.x-grid3-summary-row td{
line-height:23px;//控制GRID单元格高度
vertical-align:center;//单元格垂直居中
border-right: 1px solid #eceff6 !important;//控制表格列线
border-top: 1px solid #eceff6 !important;//控制表格行线
}
问题解决。

(这个大小问题, 无论是字体还是行高, 绝对是受浏览器缩放程度影响的, 但一开始我没考虑到这方面。 所以一直看ie不爽, 非常地不爽,因为它把字体显示的太小了。
现在回想一下, 还是自己的不是:有可能不是ie显示的太小了, 而是我的火狐放缩的太大了。于是我想看看我的火狐的页面放缩大小是否为100%, 但很无奈地没有找到查看或者设置的地方。Ctrl+滚动可以放大缩小, 但不能准确地定位在100%。)

    最后一个是date的显示问题。服务器端传过来的对象类型是Java.sql.TimeStamp(java.util.Date的一个包装类)。在js代码columnModel的header定义里我使用了renderer:Ext.util.Format;.dateRenderer("Y-m-d")。这样做的结果是在ff和chrome中可以正常显示, 但在ie中为空白。有两个方向的解决办法:一:在js自定义函数解析;二,在服务器端解析成字符串。js在浏览器上的差异让我不是很喜欢js, 所以我选择了第二种方法:在java代码中使用new SimpleDateFormat ("yyyy-mm-dd"). format(date)将date解析成字符串。

    最后再感叹一句, 如果天下间的浏览器只遵守一个标准就好了!这种多元化现状真是坑爹啊!

0
0
分享到:
评论
Global site tag (gtag.js) - Google Analytics