开发中遇到的兼容性问题

来源:互联网 发布:澳洲交通软件 编辑:程序博客网 时间:2024/05/23 01:31

        360浏览器,搜狗浏览器。。。这些双核浏览器一般分为‘极速模式’和‘兼容模式’,极速模式一般以webkit为内核(safari,chrome跟傲游是以webkit独立开发的,百度360搜狗是基于chrome的二次开发),而兼容模式是以ie为内核的,而且你的电脑系统装的是ie几,这些浏览器的兼容模式就是以ie几为内核的。并且最重要的一点,如果你的机子装的是ie8,那这个兼容模式的内核其实是兼容ie8以下的,就是说它不是ie的标准版本是兼容这个版本,即实际上是小于你本身机子所带的ie版本的。

        我们经常遇到的问题是,别的浏览器都兼容了,ie也兼容了,但是360的兼容模式却不兼容,很煞面子,其实这些问题是很容易解决的。两个个<meta></meta>标签就能让它灰溜溜跑开。

1、<meta name="renderer" content="webkit"> 

这个meta标签的意思是如果浏览器有两个内核,那么启用webkit为内核的浏览模式(一般为极速模式)。

但是如果只用这一个meta标签的话,用户自动或浏览器不小心打开了兼容模式,又会变成不兼容的模式,除非用户重新刷新页面。

2、<meta http-equiv="X-UA-Compatible" content="IE=edge">

这个meta标签的意思是启用ie的标准版本,意思是如果你打开了360浏览器的兼容模式,那这个内核就会根据你机子的ie选择这个ie版本的标准版本,意思是如果你写的页面兼容你机子上的ie就会兼容你机子上的360兼容模式。

3、不缓存,便于bug样式调试,不缓存不兼容代码

<meta http-equiv="expires" content="-1" />
    <meta http-equiv="Pragma" content="no-cache" />

用JQuery里的trim()函数的时候在firefox支持,但是在IE里不支持
下面是错误的写法

var content = $('#content').val();  

if(content.trim() == '')    

。。。

上面的写法在firefox下不会报错,但在ie下会报错

正确的写法应该是

var content = $('#content').val();   

if($.trim(content) == '')    

  alert('空');   

或者

var content = $('#content').val();   

if(jQuery.trim(content) == '')    

。。。   


margin:0 auto;不居中问题 DOCTYPE声明滴重要性

DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。

过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


parseInt用法

parseInt(s);

parseInt(s,radix);

对于parseInt("01")到parseInt("07");都能得到正确的结果(0-7),但如果是parseInt("08") 或parseInt("09")则返回0;这是为何?

    经研究发现parseInt当不指定radix时,当以0x开头时,s按照十六进制计算的;如果以0开头且第二位不为x,则s是按照八进制计算的,因为八进制不能有8,9所以报错返回0

  parseInt("08",10)parseInt("09",10),将分别返回8和9,

  所以,在我们用时还是明确指定进位制,以防出错。




0 0
原创粉丝点击