如此兼容
挺长一段时间里,一直有网友抱怨发帖失败。我尝试了几次,都没能重现。也因为忙,就忽略这件事了。最近更换了电脑,五一假期,在回一个帖子时,问题重现了。
久不写网站代码了,很多文件也找不到了,初步看来,是JS脚本的问题,但是仍没有定位到根源,也没有解决方案,
今晚又静下心来跟踪了一下,终于发现了问题。原来是用来检测浏览器类型的函数“太老”了,没有识别出是IE。
问题函数的代码如下:
function FTB_BrowserDetect() {
doc=window.document;
navVersion=navigator.appVersion.toLowerCase();
this.ie4=(!doc.getElementById&&doc.all)?true:false;
this.ie5=(navVersion.indexOf("msie 5.0")!=-1)?true:false;
this.ie55=(navVersion.indexOf("msie 5.5")!=-1)?true:false;
this.ie6=(navVersion.indexOf("msie 6.0")!=-1)?true:false;
this.ie7=(navVersion.indexOf("msie 7.0")!=-1)?true:false;
this.isIE=(this.ie5||this.ie55||this.ie6||this.ie7)?true:false;
this.isGecko=!this.isIE;
};
这样一个版本一个版本的判断,真够累的...
搜索了一下,也有网友碰到同样的问题,并将这个函数改成下面这样。
function FTB_BrowserDetect() {
doc=window.document;
navVersion=navigator.appVersion.toLowerCase();
this.ie4=(!doc.getElementById&&doc.all)?true:false;
this.ie5=(navVersion.indexOf("msie 5.0")!=-1)?true:false;
this.ie55=(navVersion.indexOf("msie 5.5")!=-1)?true:false;
this.ie6=(navVersion.indexOf("msie 6.0")!=-1)?true:false;
this.ie7=(navVersion.indexOf("msie 7.0")!=-1)?true:false;
this.ie8=(navVersion.indexOf("msie 8.0")!=-1)?true:false;
this.isIE=(this.ie5||this.ie55||this.ie6||this.ie7||this.ie8)?true:false;
this.isGecko=!this.isIE;
};
更新的修改终于不判断版本号了:
// Browser
this.isOpera = ( u.indexOf( 'opera' ) != -1 );
this.isIE = (a.indexOf('msie') != -1 && !this.isOpera);
前两天与一个朋友聊天,话题是项目管理,他建议要把web开发独立出来,因为与普通的软件开发有很大不同,比如,web开发更讲究快速发布,随时更新,甚至质量要求也不那么高... 很多事实似乎如此(尽管未必合理),上面的代码就是很好的例子啊,不用考虑太远,5、6、7、8的出来一个新版本加一行代码,哈哈哈
不禁想起,NT驱动模型当初定下的目标是要支持“过去,现在和未来”的设备,何其伟大!