if(!+"\v1"){
  IE代码
}else{
  其他浏览器代码
}
if("\v"=="v"){//true为IE浏览器,
  document.getElementById("a").attachEvent("onporpertychange",function(e){
    console.log("inputting!!");
  }
}else{
  document.getElementById("a").addEventListener("onporpertychange",function(e){
  console.log("inputting!!");
}

 

if(!+"\v1"){IE代码}else{其他浏览器代码},

  IE8及以下浏览器中测试是true,在firefox/chrome/opera中测试是false.。

其实就是利用各浏览器对转义字符"\v"的理解
在ie浏览器中,"\v"没有转义,得到的结果为"v"
而在其他浏览器中"\v"表示一个垂直制表符(一定程度上相当于空格)

所以ie解析的"\v1" 为 "v1"
而其他浏览器解析到 "\v1" 为 "1"

在前面加上一个"+"是为了把后面的字符串转变成数字
由于ie认为"\v1"为"v1",所以前面的加上加号无法转变成数字,为NaN
其他浏览器均能变成 1

再因为js与c语言类似,进行逻辑判断时可使用数字,并且 0 为 false,其他数字则为true
所以 !1 = false ,于是其他浏览器均返回false

js在遇到如下几个值会返回false:undefined、null、NaN,所以ie中 !NaN = true

同样  if("\v"=="v")也是同样的原理。