HTML タグからすべての JavaScript イベントを削除する方法はありますか?
例えば
<img src=" " onclick="" />
<img src=" " onerror="" />
これらのタグから onclick と onerror を削除したいと思います。例のように、html タグからすべての JavaScript イベントを削除したいと考えています。
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を使用して:
$('*').each(function(){
if ($(this).is('img')) {
$(this).unbind('click');
}
});
特定の関数の onclick イベントのみを削除したい場合は、次のようにすることができます..
$(this).unbind('click', FunctionName);
jQuery 1.7の時点で、イベント バインドにも使用できる$.on() and $.off()
ため、クリック イベントのバインドを解除するには、よりシンプルで整然としたものを使用します。
$(this).off('click');
ページ ソースから物理的に削除するという意味で「削除」する場合は、正規表現を使用してほとんどのパターンを取得し、パターンon(\w+?)="(.*?)"
を空白文字列に置き換えることができます。(私はテストしていません、微調整が必要かもしれません)
バインドを解除して論理的に削除する場合のように「削除」する場合は、jQuery で unbind() メソッドを使用するか、各イベントを DOM を介して null ループに設定できます。
document.onload イベントでこの JavaScript を試してください (未テスト):
var all = document.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
all[i].onclick = undefined;
all[i].onerror = undefined;
}