簡體   English   中英

從html標記中刪除javascript事件的方法?

[英]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;
}

此處的getElementsByTagName()文檔

更新1-文檔中的所有元素

如果要獲取文檔中的所有元素,請使用document.getElementsByTagName('*')

更新2-所有事件

要清除所有事件,請查看此答案

您可以簽出jquery .unbind()

參考: http//api.jquery.com/unbind/

使用.bind()將事件處理程序放回需要的地方也很容易

通過使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM