[英]Way to remove javascript events from the html tags?
有什么辦法可以從html標記中刪除所有javascript事件?
例如
<img src=" " onclick="" />
<img src=" " onerror="" />
我想從這些標記中剝離onclick和onerror。 如示例所示,我想從html標簽中剝離所有javascript事件。
您可以執行以下操作清除事件:
// get all img elements
var imgElements = document.getElementsByTagName('img');
// loop elements
for (var i = 0; i < imgelements.length; i++) {
// clear handler
imgElements[i].onclick = null;
// add other handlers here
// imgElements[i].<here> = null;
}
更新1-文檔中的所有元素
如果要獲取文檔中的所有元素,請使用document.getElementsByTagName('*')
更新2-所有事件
要清除所有事件,請查看此答案
通過使用jQuery:
$('*').each(function(){
if ($(this).is('img')) {
$(this).unbind('click');
}
});
如果只想刪除特定功能的onclick事件,則可以這樣做。
$(this).unbind('click', FunctionName);
從jQuery 1.7開始 ,您還可以使用$.on() and $.off()
進行事件綁定,因此要取消綁定click事件,可以使用更簡單,更簡潔的方法:
$(this).off('click');
在document.onload事件(未試用)中嘗試以下javascript:
var all = document.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
all[i].onclick = undefined;
all[i].onerror = undefined;
}
如果您的意思是“刪除”(如從頁面源中實際刪除它們一樣),則可以使用正則表達式來獲取大部分內容,將模式on(\\w+?)="(.*?)"
替換為空白字符串。 (我尚未測試,可能需要調整)
如果您的意思是“刪除”,就像通過解除綁定來從邏輯上刪除它們一樣,則可以在jQuery中使用unbind()方法,或將每個事件設置為在DOM中循環為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.