仅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 querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
jquery删除数据记录时的弹出提示效果
May 06 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
JavaScript的setter与getter方法
Nov 29 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
vue实现简单的日历效果
Sep 24 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 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中常用编辑器推荐
2007/01/02 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
python离线安装外部依赖包的实现
2020/02/13 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
大二自我鉴定
2014/01/31 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
幼师求职自荐信
2014/05/31 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
赤壁观后感(2)
2015/06/15 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书