仅IE支持clearAttributes/mergeAttributes方法使用介绍


Posted in Javascript onMay 04, 2012

一、.clearAttributes()

该方法用来清除所有用户定义的属性。如下

<div style="color:red;" onclick="alert(1)" data-a="a" data-b="b">Division</div> 
<script> 
var div = document.getElementsByTagName('div')[0]; 
alert(div.outerHTML); 
div.clearAttributes(); 
alert(div.outerHTML); 
</script>

运行后依次弹出如下

仅IE支持clearAttributes/mergeAttributes方法使用介绍

仅IE支持clearAttributes/mergeAttributes方法使用介绍

可以看到,第二次alert出的outerHTML已经没有了“data-a”,“data-b”,“onclick=alert(1)”属性。前两个属性是自定义的,onclick则是自有的但也清除了。

虽然outerHTML清除了,但事件并没有真正清除。点击div仍然会弹出1。(注意:对于元素自由属性如id,name,style是不会被清除的)
以上发现onclick属性在outerHTML虽然删除了,但事件handler却没有删除,点击仍然可以触发。那么通过attachEvent方式添加的事件能清除吗? 试试便知

<div>division</div> 
<script> 
var div = document.getElementsByTagName('div')[0]; 
div.attachEvent('onclick', function(){alert(1)}); 
div.clearAttributes(); 
</script>

测试发现,IE6/7/8中点击该div不会弹出1,但IE9中仍然会弹出。即IE9中不能通过clearAttributes清除attachEvent方式添加的事件handler。

二、.mergeAttributes()

该方法用来把指定元素的所有属于拷贝到自己身上,包括attributes、events、styles。如下

<div id="head" style="color:red;" onclick="alert(1)" data-a="a">Division</div> 
<p>paragraph</p> 
<script> 
var div = document.getElementsByTagName('div')[0]; 
var p = document.getElementsByTagName('p')[0]; 
alert(p.outerHTML); 
p.mergeAttributes(div); 
alert(p.outerHTML); 
</script>

拷贝前p的outerHTML

仅IE支持clearAttributes/mergeAttributes方法使用介绍

拷贝后p的outerHTML

仅IE支持clearAttributes/mergeAttributes方法使用介绍

对比就知道div的style(styles)、onclick(events)、data-a(user-defined attributes)都拷贝到p上了。现在点击p也能alert出1。

细心的同学会发现div的id没有拷贝过来。的确,在IE5之前,attributes是只读的,id/name不被合并。IE5.5后则可以通过指定第二个参数值决定是否拷贝id/name属性。

只需将mergeAttributes的第二个参数指定为false,就可以拷贝id/name了。如
p.mergeAttributes(div,false);
效果

仅IE支持clearAttributes/mergeAttributes方法使用介绍

相关:
http://msdn.microsoft.com/en-us/library/ie/ms536350%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ie/ms536614%28v=vs.85%29.aspx

Javascript 相关文章推荐
JS类库Bindows1.3中的内存释放方式分析
Mar 08 Javascript
IE6下opacity与JQuery的奇妙结合
Mar 01 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
实例详解jQuery表单验证插件validate
Jan 18 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
vue仿element实现分页器效果
Sep 13 Javascript
微信小程序实现工作时间段选择
Feb 15 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
vue 实现动态路由的方法
Jul 06 Javascript
vue 组件简介
Jul 31 Javascript
js查错流程归纳
May 04 #Javascript
iphone safari不支持position fixed的解决方法
May 04 #Javascript
JavaScript之自定义类型
May 04 #Javascript
Javascript 键盘事件的组合使用实现代码
May 04 #Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
May 03 #Javascript
jQuery 开发者应该注意的9个错误
May 03 #Javascript
jQuery Ajax请求状态管理器打包
May 03 #Javascript
You might like
php ctype函数中文翻译和示例
2014/03/21 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python实现大文件分割与合并
2019/07/22 Python
浅析Python 责任链设计模式
2020/09/11 Python
python 实现IP子网计算
2021/02/18 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
Java如何支持I18N?
2016/10/31 面试题
物流创业计划书
2014/02/01 职场文书
挂职个人工作总结
2015/03/05 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
2019公司管理制度
2019/04/19 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
MySQL中varchar和char类型的区别
2021/11/17 MySQL
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
室外天线与收音机天线杆接合方法
2022/04/05 无线电