2015-06-25 33 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