浏览器兼容性问题汇总

IE

  1. Angualr 4的表单脏值检测ng-dirty在IE11下默认为true
  2. IE8不支持Object.defineProperty( ),所以不支持Vue
  3. IE11RTM版本没有window.location.origin字段
  4. IE11建立Websocket时使用形如http://www.abc.com:/websocket的地址时会报错,其他浏览器不会
  5. IE不支持yyyy-MM-dd hh:mm:ss日期格式,只支持yyyy/MM/dd hh:mm:ss格式
  6. IE8中event对象须从window对象中获取
  7. IE8中不支持e.target用于获取当前元素,可以用以下方法来解决
$("#btn").click(function(e) { 
  var event = e | window.event; 
  var target= event .target || event .srcElement; //获取document 对象的引用 
})
  1. event.preventDefault的作用是阻止默认行为,常用于a标记等有默认行为的元素。比如a标签点击时默认跳转链接,就可以用e.preventDefault进行阻止。a标签的默认跳转行为还可以用下面这种方式来阻止
跳转到首页

项目中还遇到了一个想了好久才想明白的兼容性问题,给button按钮添加点击事件后,点击后弹出弹框,但是按回车后还可以继续弹出弹框。这是因为,当焦点在input或button等表单元素上时,浏览器默认按下回车时触发按钮的点击事件,这时就可以用通用的方法来阻止默认行为了

$("button").click(function(e) { 
  var event = e | window.event; 
  if(e.preventDefault) { 
    event .preventDefault(); 
  } else { 
    event .returnValue = false; 
  } 
});
  1. IE8不支持css :after选择器
IE8-IE9更新
  1. createElement 方法中不允许使用尖括号<>
  2. IE9 标准模式不支持arguments.caller 属性
  3. 不再支持使用不带“.call”或“.bind”的函数指针调用方法
  4. 不再连接内容属性和 DOM expando
  5. JavaScript 属性列举在IE9 中不同
  6. 数学精确度在IE9 中不同
  7. 间接“eval”函数调用的行为方式不同
  8. IE9 处理含大型索引的数组项目的方式不一样
  9. 重叠元素会被复制
  10. DOM中会保留空格
  11. 部分DOM 事件已过时
IE10-IE11更新
  1. 已删除attachEvent,改用addEventListener
  2. 已删除window.execScript,改用eval
  3. 已删除window.doScroll,改用window.scrollLeft、window.scrollTop
  4. 已删除document.all,改用document.getElementById
  5. 已删除document.fileSize、img.fileSize,使用 XMLHttpRequest 可提取源
  6. 已删除script.onreadystatechange 和 script.readyState,改用script.onload
  7. 已删除document.selection,改用window.getSelection
  8. 已删除document.createStyleSheet,改用document.createElement("style")
  9. 已删除style.styleSheet,改用style.sheet
  10. 已删除window.createPopup,改用 div 或 iframe(zIndex 值很高)

chrome

  1. 61版本下bootstrap-datetimepicker存在日期选择框隐藏出现内容残留的问题

Firefox

  1. beforeunload事件中的弹框无法显示,异步ajax无法发送

你可能感兴趣的:(浏览器兼容性问题汇总)