有没有办法阻止来自外部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标记。
答案 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);