低版本IE兼容汇总

更新日期: 2019-03-12阅读: 3.6k标签: 兼容

1. JSON未定义

问题描述:
IE8以下浏览器未定义JSON对象,无法使用JSON.parse()和JSON.stringify()方法

解决方法:
通过IE的if条件判断在IE8及以下浏览器导入json2.js即可

扩展:IE的if条件判断
<!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]--> 
<!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以识别 <![endif]--> 
<!--[if IE 6]> 仅IE6可识别 <![endif]--> 
<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]--> 
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]--> 
<!--[if IE 7]> 仅IE7可识别 <![endif]--> 
<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]--> 
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->


2. IE8下jquery报错:意外地调用了方法或属性访问

问题描述:
IE8下jquery报错:意外地调用了方法或属性访问
解决方法:
更改页面 title 不可以使用:
$("title").html("hello");

而应该使用:
document.title="hello";


3. IE10以下不支持placeholder属性

问题描述:
placeholder属性是H5新增的input属性,IE10以下浏览器均不支持

解决方法:
首先判断当前浏览器版本是否支持placeholder属性,若不支持则通过为input添加focus和blur事件,
获得焦点时:获取当前元素的placeholder属性值,并将属性值设置为input的value
失去焦点时:判断当前input的value是否等于空(''),若为空则将属性值设置为input的value
提交时:判断当前input的value是否等于placeholder属性值,若相等则将value等于空


//判断input是否支持placeholder属性
var input = document.createElement('input');
if("placeholder" in input){
alert('支持');
}else{
alert('不支持');
}
//jquery解决方法
jQuery('[placeholder]').focus(function() {
var input = jQuery(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = jQuery(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
jQuery(this).find('[placeholder]').each(function() {
var input = jQuery(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
});


4. IE7、8 parseInt处理0开头字符串异常问题

问题描述:
ie8和ie7使用的是ECMAScript3,将’0086’,’0060’按照八进制进行了处理,
所以会出现’0060’变成了48,而八进制中是不会出现数字8的,所以parseInt(‘0086’)就返回了0;

解决方法:
parseInt()函数可解析一个字符串,并返回一个整数。
语法 parseInt(string, radix)返回值,返回解析后的数字。
说明 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
举例,如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为
八进制或十六进制的数字。
如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
参数 描述
string 必需。要被解析的字符串。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,
则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,parseInt() 将返回 NaN。


5. IE报错缺少标识符、字符串或数字

问题描述:
其他浏览器均没有问题,新版本的IE也没有问题,低版本的IE会报这个错误,
由于对象的末尾添加了逗号导致的。

解决方法:
去掉对象中最后一个键值对后的逗号


6.使IE7兼容透明度

问题描述:
IE7不兼容opacity属性

解决办法:

.opacity{
opacity: 0.5; /*通用*/
filter: alpha(opacity=0); /*IE*/ 
-moz-opacity:0.5; /* Mozilla */
-khtml-opacity:0.5; /* Safari */
}


7.IE6、7右浮动换行问题

问题描述:
IE6、7下,若浮动元素之前存在兄弟行内非浮动元素,
IE 会将浮动元素所在的“当前行”认为是其前边的兄弟行内元素
所产生的匿名框的底边,导致该浮动元素折行。

解决办法:
1、使用css hack,*margin: -28px;为元素添加负的margin,调整位置
2、将右浮动元素放在所有兄弟行内非浮动元素的前面
3、将所有兄弟行内非浮动元素添加浮动


8.IE6、7文字被折行

问题描述:
<ul>
<li></li> 
<li></li> 
<li></li>
</ul> 
li {float:left; margin-right:10px; line-height:20px;} 
不定宽的浮动时会出现如下文字折行

解决办法:

强制文本不换行显示white-space:nowrap


9.使用jQuery的load()方法加载代码块时,空白

问题描述:
低版本的IE在使用jQuery的load()方法加载代码块时,加载失败页面空白,并且控制台未报错。

解决办法:
低版本的IE对HTML格式要求严格,标签未闭合,标签书写错误,错误嵌套,
缺少必须属性等都会导致load()方法加载失败,检查代码,更正错误即可解决。

来自:https://segmentfault.com/a/1190000018471972


链接: https://fly63.com/article/detial/2328

CSS/CSS3常用的样式兼容,样式总结

这篇文章主要介绍了css中常用但是又难记的样式作为总结,方便大家学习和使用。包括了‘单行缩略号‘、’css圆角兼容’、‘元素阴影’,‘border取消宽度影响’,‘css3的背景渐变’,‘css的透明’等等

CSS3 nth-child的使用,详解css中nth的作用,以及nth-child的兼容写法

:nth-child是css3的一个比较常用的选择器。它用于匹配属于其父元素中的子元素,不论元素的类型。 它的参数可以是数字、关键词或公式。

CSS 3中-webkit-, -moz-, -o-, -ms-这些私有前缀的含义和兼容

css3作为页面样式的表现语言,增加了很多新的属性,但是部分css3属性在一些浏览器上还处于试验阶段,所以为了有效的显示css3的样式,对应不同的浏览器内核需要不同的前缀声明。

css定义变量_css原生变量的使用和兼容 附带还有更高性能,文件更高压缩率的好处

在开发中,css样式有一些属性往往需要重复使用,为了避免代码冗余,降低维护成本。我们需要使用CSS预编译工具【Sass/Less/Stylus】,随着这些工具的流行,CSS变量也开始规范制定,目前很多浏览器都已经支持了

caniuse.com_判断浏览器对css3、html5的兼容性测试工具

caniuse.com 是一个工具性的网站,帮助人们了解各个浏览器以及它们的不同版本对 HTML5、CSS3 等高级特性的支持情况。直接在上面的输入框中输入想要搜索的属性。然后结果就直接出来了。

web浏览器在线兼容性测试工具_检测html网页在不同浏览器上的兼容问题

对于web前端开发者而言,为了确保html代码在不同浏览器上能正常工作,是一件很麻烦的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,下面就为大家推荐一下比较流行的web浏览器在线兼容性测试工具。

原生js兼容写法_在ie标准下的兼容性写法

经常使用原生js,就要考虑到一些浏览器上的兼容,尤其是IE,下面就整理关于js的一些兼容性写法

解决IE不兼容document.getElementByClassName()的实现方法

在使用原生js时候,需要通过class样式名来获取dom对象,发现在IE8以下是不支持document.getElementByClassName()这种方法的。那么我们如何来实现获取classname的兼容写法呢?

es6之解构赋值

es6的语法已经出了很长的时间了,在使用上也可以通过babel这类的编译工具转译为浏览器可以识别的es5的语法,这篇文章主要会介绍解构赋值基本用法以及在实际使用场景中相比es5语法的优势

document.head.appendChild(element) 在 IE8 及以下报错

问题:在开发中会遇到动态添加 script 标签的情况。但是在 IE8 以下会报如下错误:SCRIPT5007: Unable to get value of the property appendChild: object is null or undefined,解决办法如下

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!