博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

tomqq & security

网络安全/IDS/SSL-VPN/WEB技术/java/
  tomqq.cublog.cn

关于作者
姓名:tomqq
职业:挨踢的
位置:成都
个人介绍:2004年毕业于四川大学计算机应用专业,硕士学历,毕业后一直从事IDS和SSL-VPN的研发至今。Email:hekong@gmail.com

|| << >> ||
我的分类


设计支持多os的ssl-vpn客户端(四) ——如何保持不同浏览器之间的兼容性

设计支持多os的ssl-vpn客户端(四)
——如何保持不同浏览器之间的兼容性
Tomqq 6/4/2008

    不同的浏览器对于applet、js以及html脚本的处理都是有所区别的,有时候遇见的问题甚至会导致某些功能无法实现。所以,做跨平台的与web相结合的程序的时候,这部分相关的经验积累是比较重要的。

主要遇见的问题如下:
一、 不同浏览器对于applet生命周期处理的区别
Applet生命周期分为4个过程,init,start,stop和destroy,分别解释如下:
Init在applet初始化的时候被执行,如果你刷新页面,也一样会被执行;
Start是applet被init以后紧接着会执行的一个函数;
Stop,页面停止的时候applet执行的参数,比如多tab切换到另一个页面后;
Destroy,离开这个页面后执行的函数。
理论上,这样子很好,我也依照官方的说明,在这些函数里面加入了逻辑控制,但实际上…
Init和start在每个浏览器上都被遵照的,没有问题;但是剩下两个可就表现不一样了。我的测试结果如下:
Safira是严格按照appley生命周期定义来实现的,页面切换以后,或者进入到另一个url(另一个tab)以后,stop被调用;firefox就不是了,stop无论何时都没有被执行;所以,stop里面要实现的业务逻辑,只能放在本地的server里面实现,靠通信来解决和协调。
结论:以浏览器生命周期控制机制作为依据,在多浏览器上是不可行的。Safira VS firefox,Safira加一分。

二、 同一浏览器进程内双applet运行的问题
这个问题是这样子的:多os使用applet作为通信工具,同时在页面上有一些服务本身也是applet的,这时候,启动另一个applet,会使用同一浏览器进程空间,在firefox上就无法启动,safira则完全可以,Safira VS firefox,Safira再加一分。
要解决这个问题,浏览器使用1.5的jdk则没有问题。

三、 对html处理的不兼容性
这个就多了。很多html写法在不同的浏览器都不一样,显示出来的样式也有区别。比如走马灯maqueen这些,firefox就完全不支持,safira则像IE一样支持良好。Safira VS firefox,Safira再加一分。
多多尝试,这部分不多赘述,属于经验问题。解决办法一个是采用标准格式书写,另一个是针对不同浏览器,js做特殊处理。

四、 对js处理的不兼容性
对于js的容错性上,safira表现良好,firefox则很敏感。比如,有一个thickbox的js工具包,不小心被我包含了2次,safira则没有丝毫影响,而firfox则出现了莫名其妙的问题:页面出来以后,load的那个gif文件不消失,不知何故。
另外,firefox对js支持力度不够,运行了js以后,感觉浏览器很慢(jquery工具箱),safira则很流畅,并且自带js debugger。建议是在firefox上,尽量少用js。
Safira VS firefox,Safira再加一分。

五、 兼容性和稳定性的综合比较
在运行过程中,感觉safira这种商业浏览器综合表现的都会好一些,体现在一些零碎的问题上。运行applet里面某些命令时,firefox出现了崩溃的现象;多次刷新加载后的页面,firefox出现过jsobject对象崩溃/无效的情况,safira表现则令人满意。

发表于: 2008-06-04,修改于: 2008-06-04 18:25,已浏览69次,有评论0条 推荐 投诉


网友评论
 发表评论