<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

文章分类

导航

订阅

如此兼容

挺长一段时间里,一直有网友抱怨发帖失败。我尝试了几次,都没能重现。也因为忙,就忽略这件事了。最近更换了电脑,五一假期,在回一个帖子时,问题重现了。

久不写网站代码了,很多文件也找不到了,初步看来,是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驱动模型当初定下的目标是要支持“过去,现在和未来”的设备,何其伟大!

 

 

posted on 2012年5月2日 22:31 由 Raymond

# re: 如此兼容 @ 2012年5月4日 14:01

这个问题我碰到过,解决办法也很简单,IE开启兼容模式即可。

rong_bo

Powered by Community Server Powered by CnForums.Net