防止来自外部javascript文件的内联onclick

时间:2015-06-25 08:38:31

标签: javascript

有没有办法阻止来自外部js文件的内联onclick属性?

<button id="myButton" type="button" onclick="alert('Dont show me please!');" >Click me</button>

在script.js中:

var mybutton = document.getElementById("myButton").addEventListener("click", preventIt);

function preventIt(e){
  console.log('click event...');
  e.preventDefault();
}

假设我们无法更改html标记。

4 个答案:

答案 0 :(得分:4)

您可以删除onclick属性,如下所示:

document.getElementsByID("myButton").removeAttribute("onclick");

答案 1 :(得分:2)

删除

window.onload=function() {
  document.getElementById("myButton").removeAttribute("onclick");
}

或替换:

window.onload=function() {
  document.getElementById("myButton").onclick=function() {
     alert("No you cannot");
  }
}

答案 2 :(得分:2)

我认为最快的方法是克隆节点,这将删除所有事件侦听器:

var old_element = document.getElementById("btn");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);

请注意,因为这也将清除节点的所有子元素上的事件侦听器,因此如果您想要保留它,则必须一次一个地显式删除侦听器。然后添加按钮。

答案 3 :(得分:0)

我认为这应该有用

function preventIt(e) {
   e = e || window.event;
   console.log(e.type);
   if (e.preventDefault) {
      e.preventDefault();
   } else {
      e.returnValue = false;
   }
   return false;
}

var myButton = document.getElementById("myButton");
myButton.addEventListener('click', preventIt);