仅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 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
详解Node.js串行化流程控制
May 04 Javascript
详解基于webpack&amp;gettext的前端多语言方案
Jan 29 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
May 08 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
JS前端可视化canvas动画原理及其推导实现
Aug 05 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制作图形验证码代码分享
2014/10/23 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP实现图片压缩
2020/09/09 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
QQ登录简单实现代码
2021/03/09 Javascript
javascript英文日期(有时间)选择器
2007/05/02 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
javascript实现数独解法
2015/03/14 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python实现泊松图像融合
2018/07/26 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
教育项目合作协议书格式
2014/10/17 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技