2015-06-25 31 views
2

有没有什么办法可以防止外部js文件内嵌onclick属性?防止从外部JavaScript文件内联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

您可以删除onclick属性,像这样:

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

删除

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

或更换:

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

我认为要做到这一点,最快的方式就是克隆节点,它将删除所有事件监听器:

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

只需要小心,因为这样还会清除节点所有子元素上的事件侦听器,所以如果要保留该元素,则必须逐个显式删除侦听器。然后添加按钮。

+0

有趣的替代 – mplungjan

+0

你的方式也不错。 –

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); 
+0

永远不要以“我认为”开始答案:) – mplungjan

+0

感谢您的更正@mplungjan – kellymandem