最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下

1,IE下的内存泄露.

在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收。

解决:手动将该js变量置为null

2,IE<9,Nodelist无法调用slice和push

解决:手动模拟

3,IE,直接使用elem.attrName的形式获得属性值会自动串改DOM元素的某些属性,比如a的href

解决:使用elem.getAttribute(attrName)或elem.getAttributeNode(attrName).value
4,IE<9,使用getAttribute获取input元素的value时返回null

解决:通过elem.defaultValue来获取

5,IE<9,不能直接使用getAttribute('className')来获取class

解决:使用getAttribute('class')

6,Opera < 10,当一个元素有多个class的时候,用getElementsByClassName来获取第二个类会出错。
解决:不要使用这个API

7,黑莓4.6的浏览器会返回那些不在DOM树中的节点。
解决:用elem.parentNode来判断是否在DOM树中

8,IE8中的QSA无法使用[selected]之类的属性选择符,无法使用:checked之类的伪元素,对name的大小写不敏感

9,contains不应该包含自身

10,检测字符串可以转换为数字,使用这个方法obj - parseFloat( obj ) >= 0

11,delete DOM元素上的自定义属性时,IE<9会报错,具体规则如下

var div = document.createElement( "div" );
try {
//IE7无论div是否有test都会抛出异常。
//IE8在没test的情况下会抛出异常,有test的情况下不会。
//IE9都不会。
delete div.test;
} catch( e ) {
alert(1);
}

所以这里要做判断,IE下使用removeAttribute来删除

12,JSON.stringify的tips

//var see = {name:'see',id:{toJSON:function () {}}};JSON.stringify(see)
//var see = {my:function () {}};JSON.stringify(see);
//JSON.stringify(window);

//stringify是无法转换带函数、带循环引用的对象的

13,IE6-7用InnerHTML生成table会自动插入tbody

14,IE678不能直接用InnerHTML生成link元素

15,checkbox进行append后,它的checked状态不会保留。IE67

16,radio在进行append后,它的checked状态如果出现在name属性之前则不会保留。webkit(实测只有safari会出现这样的状况)

17,IE下textarea的defaultValue不一定被正确地克隆

18,Webkit下fragment元素里的input元素的checked状态不会被正确克隆

19,有的事件没有target,比如load ,IE67

20,event.target不能为TEXT_NODE,chrome23+,safari老版本

21,老版本的FF不会触发非左键click的冒泡

22,IE678在detach事件时,还需要手动将onEventType如onclick置为null

浏览器兼容性小整理和一些js小问题(后面会继续更新)的更多相关文章

  1. React.js 小书 Lesson9 - 事件监听

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...

  2. JS小积累(二)— 自动获取浏览器尺寸

    JS小积累-获取浏览器窗口尺寸 作者: 狐狸家的鱼 GitHub:八至 autodivheight(); function autodivheight() { //函数:获取尺寸 //获取浏览器窗口高 ...

  3. js小功能整理

    /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...

  4. 第24篇 js小知识和“坑”

    前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...

  5. 关于浏览器内核与javascript引擎的一些小知识

    浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...

  6. React.js 小书介绍

    React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...

  7. 一个js小游戏----总结

    花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...

  8. js小工具---本地图片转换为base64编码数据

    今天用jmeter对图片对比进行性能测试,post请求为json请求,图片为Base64编码后的图片数据.所以需要将一张本地图片生成base64编码,找到一个js小工具,记录在这儿便于以后复用. 效果 ...

  9. React.js 小书 Lesson25 - 实战分析:评论功能(四)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...

随机推荐

  1. [CareerCup] 5.5 Number of Converted Bits 转换数字所需的位数

    5.5 Write a function to determine the number of bits required to convert integer A to integer B.EXAM ...

  2. initWithNibName&initWithCoder &awakeFromNib&UIView常见属性方法

    第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第 二.initWithCoder 是一个类在IB中创建 ...

  3. iOS开发系列--扩展--播放音乐库中的音乐

    众所周知音乐是iOS的重要组成播放,无论是iPod.iTouch.iPhone还是iPad都可以在iTunes购买音乐或添加本地音乐到音乐 库中同步到你的iOS设备.在MediaPlayer.fram ...

  4. ios —— UIViewAdditions 布局坐标类库

    方便大家计算视图的高度,宽度,上下左右坐标,简化代码操作,更加直观 下载地址:http://download.csdn.net/detail/humingtao2013/7511657

  5. error C2065: “IDD_DIALOG1” : 未声明的标识符

    编译时提示error C2065: “IDD_DIALOG1” : 未声明的标识符 错误的可能原因及解决方法如下: 1.出错文件中没有包含资源文件ID声明的resource.h文件.在出错文件中加入# ...

  6. PHP+MD5

    echo substr(md5("admin"),8,16);//16位MD5加密,16位加密是32位加密从第8个字符开始到16个字符,用substr函数截取了字符得到.. ech ...

  7. ios开发怎么获取输入的日期得到星期

    + (NSString*)weekdayStringFromDate:(NSDate*)inputDate { NSArray *weekdays = [NSArray arrayWithObject ...

  8. XMLHttpRequest的POST中文表单问题解决方案

    XMLHttpRequest的POST中文表单问题解决方案 由于XMLHttpRequest POST的内容是用UTF-8编码,所以在服务端要先把request的编码改为UTF-8. 而且客户端pos ...

  9. TreeSet和TreeMap的输出

    如果加入TreeSet和TreeMap的元素没有实现comprable中的compareTo()方法,那么会报错"treeset cannot be cast to java.lang.Co ...

  10. 【UVALive 3905】BUPT 2015 newbie practice #2 div2-D-3905 - Meteor

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/D The famous Korean internet co ...