仅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 相关文章推荐
一个基于jquery的图片切换效果
Jul 06 Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
再谈Javascript中的异步以及如何异步
Aug 19 Javascript
值得分享的JavaScript实现图片轮播组件
Nov 21 Javascript
js实现无缝滚动图
Feb 22 Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 Javascript
谈谈JS中的!!
Dec 07 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
Oct 10 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 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图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
实例解析php的数据类型
2018/10/24 PHP
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
js实现漫天星星效果
2017/01/19 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
详解Python文本操作相关模块
2017/06/22 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python实现Dijkstra算法
2018/10/17 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
2014年单位植树节活动方案
2014/03/23 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js