JS兼容性问题列表

记录平时遇见的兼容性问题,有更好的解决办法希望各位提出,会随着开发遇到问题而更新,标记为黄色的为未解决和猜测答案

提出时间 问题描述 解决方案
2014/10/22 submit按钮阻止了默认事件不能使用form.submit();发送请求, 猜测是阻止默认后,form.submit();也是属于默认事件(不确定)所以无法发送 解决办法还是不使用先禁止默认事件再发送,而让事件判断可以再发送
2014/10/22 btn.onsubmit()触发问题 submit事件必须绑定是表单,对于按钮是使用click事件,绑定submit事件比较合理,却因为html5的required特性会对验证有影响还是抛弃这种写法,
2014/10/23 使用submit事件验证表单的时候,对于required的元素是先是浏览器检测再进行发送请求的元素进行js检验,主要是radio和checkbox出现问题 点击按钮进行判断,发送请求,不要让浏览器先对required进行检测,主要是radio和checkbox出现问题,其余可以使用submit事件进行
2014/10/23 对于string.replace(/(a)+/g,function(all,key){})all和key分别是什么 测试得出all是当前匹配的同一个字符还是字符分组不确定,key可以肯定是当前匹配的字符,大概是通过增减字符串数组的长度对其经常格式转换
2014/10/24 artTemplate插入验证码失效(因为存在同个id导致失效),php插入验证码代码后会自动生成html和js,这个需要使用div隐藏, 把id操作替换掉,把html的元素id替换掉,click事件重写,把替换的图片地址传递过去(复制节点的操作还得要重新把id替换,繁琐),假如不是太注重这严谨的结构可以无视
2014/10/29 无法修改ie6-8的input的type实现placeholder ie6-8的type是只读模式,所以无法修改实现placeholder
2014/11/3 resize后的document.documentElement.scrollWidth值不变而且是最大值  
2014/11/6 required输入表单,验证表单会强制验证input某个元素 关闭html5的验证
第一种方法是利用form元素的novalidate属性,它可以关闭整个表单验证先把表单的该属性设置为true,关闭表单验证
第二种方法是利用input元素或submit元素的formnovalidate属性,利用input元素的formnovalidate属性可以让表单验证对单个input元素失效,相当于利用了form元素的novalidate属性,整个表单验证都将关闭。
2014/11/10 hover和mouseover和mouseout的实现不一样 jQuery实际是使用是mouseleave和mouseenter,区别在于mouseleave和mouseenter子元素的时候不会重新触发事件,而mouseover和mouseout会.主要在事件间加入了判断
vart=e.relatedTarget;
if(!t||(!(t.compareDocumentPosition(this)&8)&& t!==this)){
//t有可能是不存在的,target在很边缘的情况下,从浏览器外部直接移入target的情况.alert('mouseenter') }
http://www.cnblogs.com/_franky/archive/2010/05/01/1725624.html
2014/10/11 复选框无法显示 根据W3C的表单规范,在checked属性是一个布尔属性,这意味着只要该attribute存在,即使它没有值,或是一个空字符串,该属性对应的property就是true,不使用attr方法使用pop方法
2014/11/27 cookiewebkit测试cookie有问题 webkit不支持本地cookie
2014/12/20 路径 默认ie不支持播放本地文件出于安全因素,现代浏览器可以使用blog路径读取或者html5的FileReader()对象实现
2015/3/19 requireJS exports:aa.a报错a未找到 exports模块输出接口一个方法名称,*.*会执行对应下的方法会报错

转载请保留原文地址,谢谢