美文网首页
html\css\js-dom在不同主流浏览器的兼容问题

html\css\js-dom在不同主流浏览器的兼容问题

作者: 相识菩提 | 来源:发表于2019-05-28 14:31 被阅读0次

1、html

主要是解决html5在主流浏览器上的兼容性。特别是在IE浏览器上的兼容性。

//方法 一:使用google的html5shiv包,将它引入放在<head></head>内部

<!--[if IE]>

<script src='http://html5shiv.googlecode.com/svn/trunk/html5.js'></script>

<![endif]-->

//原理就是使html5标签成块状

//方法二:直接写js代码

<!--[if lt IE9]>   

<script>   

  (function() { 

    if (!   

    /*@cc_on!@*/ 

    0) return; 

    var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', '); 

    var i= e.length; 

    while (i--){ 

        document.createElement(e[i]) 

    }   

})()   

</script> 

<![endif]-->

注:@cc_on!@可以被ie识别并作为程序执行,同时启用ie的条件编译

//方法三:如果ie6/7/8 禁用脚本的用户,那么可以参照facebook的做法,引导用户进入带有noscript标识的页面,用html4标签代替HTML5标签。当用户点击’查看这里’时,引导用户进入html4标签设计的网页

<!--[if lte IE 8]>   

<noscript> 

    <style>.html5-wrappers{display:none!important;}</style> 

    <div class="ie-noscript-warning">您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>. 

    </div> 

</noscript> 

<![endif]-->

css

css3不兼容IE9以下浏览器的解决方案:

//对于css3新增的属性,大多数解决方式是属性名前加不同浏览器内核前缀

-ms-border-radius

-moz-border-radius

-o-border-radius

-webkit-radius

也可以使用google提供的一个包

<!--[if lte IE 9]>

    <script src="JS/selectivizr.js"></script>

    <![endif]-->

    但是,需要注意几点:

    (1)与selectivizr.js同文件夹下需要放入PIE.htc,PIE_IE9.js,PIE_IE678.js,prefixfree.min.js文件;

    (2)样式不能是行内样式;

    (3)如果需要用到伪类的选择器,请在页面引用JQ、 MooTools文件等,不同的文件对选择器的支持程度不同。

其他,css在不同浏览器的差异解决

(1)cursor:hand; 和 cursor:pointer

firfox不支持hand,IE支持pointer

所以统一使用pointer

(3)css透明问题

firfox:opacity:0.5;

IE:filter(alpha=50);zoom:1;

(4)css中的width和padding

在IE7和FF中width宽度不包括padding,在IE6中包括padding

(5)IE中盒子大小不包括border;Firfox中包括

解决方案:使用!important

div{margin:30px !important;margin:28px;}

因为在IE中不之别!important,在别的浏览器识别它。

(6)margin加倍问题

在IE中,给float的div设置margin值会加倍,这是IE6都存在的问题

解决方案:给div加 display:inline;

(7)IE不识别min-

在IE 中把正常的width和height当有min-的情况。所以可以同时设置width和min-width

div{width:auto;height:auto;min-width:80px;}

js-DOM

(1)注册事件和移出事件

IE : attachEvent(on+eventName,callback) callback中的this指向window ; detachEvent(on+eventName)

火狐和谷歌:addEventListener(eventName,callback,false) callback中this指向当前事件对象 ; removeEventListener(eventName)

(2)取消事件冒泡

IE: window.event.cancelBubble = true

火狐: e.stopPropagation()

谷歌二者都可以

(3)取消浏览器默认行为

通用的return false;

event.preventDefault() //低版本IE不支持

低版本IE: window.event.returnValue = false

(4)innerText和textContent

IE中有innerText属性,firfox中有textContent

解决方案:

function setInnerText(ele,content){

    if(typeof ele.textContent==='undefined'){

    ele.innerText = content

}else{

    ele.textContent=content

}

}

(5)input的type属性

IE: input的type属性是只读的

Firfox: input的type属性是可写的

(6)重定向到新页面

IE\火狐2.0 : window.location 或者 window.location.href

Firfox1.5 : window.location

(7)获取事件的真正触发者

IE : window.event.srcElement

火狐: event.target

(8)获取样式float关键字

IE : element.style.styleFloat

非IE : element.style.cssFloat

(9)获得计算后的样式

IE: element.currentStyle

非IE: window.getComputedStyle(element,null)

相关文章

  • html\css\js-dom在不同主流浏览器的兼容问题

    1、html 主要是解决html5在主流浏览器上的兼容性。特别是在IE浏览器上的兼容性。 //方法 一:使用goo...

  • Html引用实现不同浏览器兼容问题

    Html引用实现不同浏览器兼容问题 在head部分插入即可

  • 兼容的相关知识点

    一、 CSS hack 是什么? CSS hack 是处理兼容问题的一种方式,即针对不同的浏览器编写不同的代码,...

  • 关于浏览器的兼容问题

    关于浏览器的兼容问题 1. 什么是 CSS hack 根据百度的简述:CSS hack由于不同厂商的浏览器,比如I...

  • 2019web前端开发全新面试题库 二

    1、为什么要初始化CSS样式? 答案:因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初...

  • 10.初始化CSS样式

    10.初始化CSS样式 (1)为什么要初始化CSS样式:因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的...

  • 前端小tips(二)

    11.为什么要初始化CSS样式? 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化...

  • 前端面试2

    11.为什么要初始化CSS样式。 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化...

  • 浏览器兼容

    css兼容问题: 默认的内外边距不同问题:各个浏览器默认的内外边距不同解决:*{margin:0;padding:...

  • CSS初始化,样式分类

    CSS初始化 为了考虑到浏览器的兼容问题,其实不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现...

网友评论

      本文标题:html\css\js-dom在不同主流浏览器的兼容问题

      本文链接:https://www.haomeiwen.com/subject/abcizqtx.html