问题描述:
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]-->
问题描述:
IE8下jquery报错:意外地调用了方法或属性访问
解决方法:
更改页面 title 不可以使用:
$("title").html("hello");
而应该使用:
document.title="hello";
问题描述:
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('');
}
})
});
问题描述:
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。
问题描述:
其他浏览器均没有问题,新版本的IE也没有问题,低版本的IE会报这个错误,
由于对象的末尾添加了逗号导致的。
解决方法:
去掉对象中最后一个键值对后的逗号
问题描述:
IE7不兼容opacity属性
解决办法:
.opacity{
opacity: 0.5; /*通用*/
filter: alpha(opacity=0); /*IE*/
-moz-opacity:0.5; /* Mozilla */
-khtml-opacity:0.5; /* Safari */
}
问题描述:
IE6、7下,若浮动元素之前存在兄弟行内非浮动元素,
IE 会将浮动元素所在的“当前行”认为是其前边的兄弟行内元素
所产生的匿名框的底边,导致该浮动元素折行。
解决办法:
1、使用css hack,*margin: -28px;为元素添加负的margin,调整位置
2、将右浮动元素放在所有兄弟行内非浮动元素的前面
3、将所有兄弟行内非浮动元素添加浮动
问题描述:
<ul>
<li>…</li>
<li>…</li>
<li>…</li>
</ul>
li {float:left; margin-right:10px; line-height:20px;}
不定宽的浮动时会出现如下文字折行
解决办法:
强制文本不换行显示white-space:nowrap
问题描述:
低版本的IE在使用jQuery的load()方法加载代码块时,加载失败页面空白,并且控制台未报错。
解决办法:
低版本的IE对HTML格式要求严格,标签未闭合,标签书写错误,错误嵌套,
缺少必须属性等都会导致load()方法加载失败,检查代码,更正错误即可解决。
来自:https://segmentfault.com/a/1190000018471972
这篇文章主要介绍了css中常用但是又难记的样式作为总结,方便大家学习和使用。包括了‘单行缩略号‘、’css圆角兼容’、‘元素阴影’,‘border取消宽度影响’,‘css3的背景渐变’,‘css的透明’等等
:nth-child是css3的一个比较常用的选择器。它用于匹配属于其父元素中的子元素,不论元素的类型。 它的参数可以是数字、关键词或公式。
css3作为页面样式的表现语言,增加了很多新的属性,但是部分css3属性在一些浏览器上还处于试验阶段,所以为了有效的显示css3的样式,对应不同的浏览器内核需要不同的前缀声明。
在开发中,css样式有一些属性往往需要重复使用,为了避免代码冗余,降低维护成本。我们需要使用CSS预编译工具【Sass/Less/Stylus】,随着这些工具的流行,CSS变量也开始规范制定,目前很多浏览器都已经支持了
caniuse.com 是一个工具性的网站,帮助人们了解各个浏览器以及它们的不同版本对 HTML5、CSS3 等高级特性的支持情况。直接在上面的输入框中输入想要搜索的属性。然后结果就直接出来了。
对于web前端开发者而言,为了确保html代码在不同浏览器上能正常工作,是一件很麻烦的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,下面就为大家推荐一下比较流行的web浏览器在线兼容性测试工具。
经常使用原生js,就要考虑到一些浏览器上的兼容,尤其是IE,下面就整理关于js的一些兼容性写法
在使用原生js时候,需要通过class样式名来获取dom对象,发现在IE8以下是不支持document.getElementByClassName()这种方法的。那么我们如何来实现获取classname的兼容写法呢?
es6的语法已经出了很长的时间了,在使用上也可以通过babel这类的编译工具转译为浏览器可以识别的es5的语法,这篇文章主要会介绍解构赋值基本用法以及在实际使用场景中相比es5语法的优势
问题:在开发中会遇到动态添加 script 标签的情况。但是在 IE8 以下会报如下错误:SCRIPT5007: Unable to get value of the property appendChild: object is null or undefined,解决办法如下
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!