我应该停止使用HTML事件处理程序属性并始终开始使用addEventListener()
吗?
示例:
<button id="mybutton">Click me</button>
<script>
var b = document.getElementById("mybutton");
b.onclick = function() { alert("Thanks for clicking me!"); };
b.addEventListener("click", function() { alert("Thanks again!"); }, false);
</script>
我的意思是我应该停止使用onclick
,onchange
等并开始使用addEventListener()
吗?
答案 0 :(得分:4)
“应该”导致基于意见的答案。 : - )
客观地说,使用addEventListener
的优点是:
您可以在同一元素上为同一事件设置多个处理程序。
您可以更有效地将JavaScript与HTML分离。仍然通过结构或其他选择器间接耦合来查找元素,但至少HTML不再具有JavaScript的任何知识。通过定义HTML和JavaScript之间的契约(例如,需要添加事物的按钮具有add-btn
类或其他类似物),您可以让不同的团队处理HTML和JavaScript而无需了解更多合同。
缺点是,除非你使用一个抽象浏览器差异的库,除非你可以忽略IE8(因为它仍然被很多人使用[Net Applications说21.7% as of Nov 2013; {{ 3}}],只有小众网站可以忽略它),你必须自己处理addEventListener
/ attachEvent
麻烦。这很容易,你使用的hookEvent
函数或类似函数,但这是一个缺点。