仅IE支持clearAttributes/mergeAttributes方法使用介绍 |
一、.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> 运行后依次弹出如下 可以看到,第二次alert出的outerHTML已经没有了“data-a”,“data-b”,“onclick=alert(1)”属性 。前两个属性是自定义的,onclick则是自有的但也清除了 。 复制代码 代码如下: <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 拷贝后p的outerHTML 对比就知道div的style(styles)、onclick(events)、data-a(user-defined attributes)都拷贝到p上了 。现在点击p也能alert出1 。 相关: |