仅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 装载iframe子页面,自适应高度
Mar 20 Javascript
Prototype Function对象 学习
Jul 12 Javascript
JS 文件大小判断的实现代码
Apr 07 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
JQuery each打印JS对象的方法
Nov 13 Javascript
jQuery中:not选择器用法实例
Dec 30 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
VUE中setTimeout和setInterval自动销毁案例
Sep 07 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
CI(CodeIgniter)框架配置
2014/06/10 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
全面理解Python中self的用法
2016/06/04 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
土木工程个人自荐信范文
2013/11/30 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
作文评语集锦大全
2014/04/23 职场文书
个人安全承诺书
2014/05/22 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
MySQL存储过程及语法详解
2022/08/05 MySQL