ie8兼容性问题: 解决方案连接地址
大忌之一:使用JavaScript关键字做为请求参数
JavaScript关键字不能作用于方法名、参数名等等
IE8 报错:缺少标识符、字符串或数字
在公司遇到的一个不起眼的参数,引发的大问题,IE8及以下浏览器 报错,报错信息莫名其妙。
IE8报错信息,我一直以为是 clickCheckAListInfo 方法的问题,其实不然,只是因为使用了关键字做为参数
把delete改为不是JavaScript所认识的的关键字即可。
科普:JavaScript关键字
break | case | catch | continue | default |
delete | do | else | finally | for |
function | if | in | instanceof | new |
return | switch | this | throw | try |
typeof | var | void | while | with |
还有ECMA 6 新增的 let const 等
JavaScript保留字
abstract | boolean | byte | char | class | debugger |
double | enum | export | extends | final | float |
goto | implements | import | int | interface | long |
native | package | private | protected | public | short |
static | super | synchronized | throws | transient | volatile |
使用JavaScript保留字或关键字做为变量名、函数名也会报标识符错误
大忌之二:在if-else语句中使用函数声明
上代码示意图:
结果示意图:
正确的使用方式-------------函数表达式
大忌之三:改变input标签type属性值
常见的 密码眼睛可见功能:
直接修改input的type的属性值 将 password改成text ,不能使用 attr() 将报错:
Uncaught Error: type property can't be changed
可以使用 prop() 方法代替 attr() 方法。
但是 在 ie8中 将会报错
而在ie9及以上则可以正常改变input的type值
所以,此功能 需要兼容到ie8的话 ,应该使用 两个input ,一个为password 一个为text 来回切换显示与隐藏
大忌之四:键盘回车触发button按钮事件
为了更好的用户体验,通常搜索输入框都会有回车搜索功能,在ie8中遇到并没有执行搜索框keyup为enter时的事件,却走了第一个button按钮的事件
原因: 在ie8中,当button标签未声明type为button时,默认type为submit。
<body>
<input type="text" class="txt">
<button class="btn">按钮</button>
</body>
<script>
$(function(){
$('.txt').on('keydown',function(e){
if(e.keyCode==13){
console.log('搜索回车')
}
})
$('.btn').on('click',function(){
console.log('按钮事件')
})
})
</script>
此问题 需要设置 button标签 的type属性为 button