浏览器兼容性小整理和一些js小问题(后面会继续更新)
最近在啃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小问题(后面会继续更新)的更多相关文章
- React.js 小书 Lesson9 - 事件监听
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...
- JS小积累(二)— 自动获取浏览器尺寸
JS小积累-获取浏览器窗口尺寸 作者: 狐狸家的鱼 GitHub:八至 autodivheight(); function autodivheight() { //函数:获取尺寸 //获取浏览器窗口高 ...
- js小功能整理
/** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...
- 第24篇 js小知识和“坑”
前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...
- 关于浏览器内核与javascript引擎的一些小知识
浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- 一个js小游戏----总结
花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...
- js小工具---本地图片转换为base64编码数据
今天用jmeter对图片对比进行性能测试,post请求为json请求,图片为Base64编码后的图片数据.所以需要将一张本地图片生成base64编码,找到一个js小工具,记录在这儿便于以后复用. 效果 ...
- React.js 小书 Lesson25 - 实战分析:评论功能(四)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...
随机推荐
- Python之socket(套接字)
Socket 一.概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- linux实践——简单程序破解
一.运行login可执行程序,屏幕显示需要输入密码,随便输入一串字符,结果是Drop dead! 二.objdump -d login,对login进行反汇编,找到main函数,找到含有scanf的那 ...
- IOS开发之——登录加密也许用到的,反转字符串
- (NSString *)stringByReversed{// NSMutableString *s = [NSMutableString string];// for (NSUInt ...
- IT应届生如何准备找工作?
今天和一个弟弟吃饭,他明年年初即将计算机研究生毕业.谈论到怎么找工作,觉得自己会的不多,心里非常发虚.虽然我当年找工作也走了很多弯路,思路并不是很清晰.但是工作了这么多年,对企业需要什么样子的人还是有 ...
- IText&Html2canvas js截图 绘制 导出PDF
Html2canvas JS截图 HTML <div id="divPDF"> 需要截图的区域 </div> JS <script src=" ...
- 推荐一款超强大的基于Angularjs的自动完成(Autocomplete)标签及标签组插件–ngTagsInput
前言 今天利用中午午休时间,给大家分享推荐一款基于Angularjs的自动完成(Autocomplete)标签及标签组插件--ngTagsInput,功能超强大的.不信,你试试就知道^_^... Au ...
- 图片ping、JSONP和CORS跨域
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<由外边距合并到BFC> 作者主页:myvin 博主QQ:851399101(点击QQ和博主发起临时会话 ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- javascript继承(七)—用继承的方式实现照片墙功能
照片墙DEMO下载 注意:图片有四种类型:1可放大:2可拖动:3既可放大也可拖动:4都不行.由于每个图片的构造函数不同而不同(目前在火狐上调试的,其它的浏览器可能不行,请见谅,主要讲继承的思想.以后会 ...
- Java数组的--遍历
(I)标准for循环遍历数组 例如代码片段: int [] nums = new int [] {0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<11;i++){ Sys ...