Untuk melengkapi jawabannya, berikut adalah contoh dunia nyata dari menghapus peristiwa saat Anda mengunjungi situs web dan tidak memiliki kontrol atas kode HTML dan JavaScript yang dihasilkan.
Beberapa situs web yang mengganggu mencegah Anda untuk menyalin dan menempel nama pengguna pada formulir login, yang dapat dengan mudah dilewati jika onpaste
acara tersebut ditambahkan dengan onpaste="return false"
atribut HTML. Dalam hal ini kita hanya perlu mengklik kanan pada kolom input, pilih "Inspect element" di browser seperti Firefox dan hapus atribut HTML.
Namun, jika acara tersebut ditambahkan melalui JavaScript seperti ini:
document.getElementById("lyca_login_mobile_no").onpaste = function(){return false};
Kami juga harus menghapus acara melalui JavaScript:
document.getElementById("lyca_login_mobile_no").onpaste = null;
Dalam contoh saya, saya menggunakan ID "lyca_login_mobile_no" karena itu adalah ID input teks yang digunakan oleh situs web yang saya kunjungi.
Cara lain untuk menghapus acara (yang juga akan menghapus semua acara) adalah dengan menghapus node dan membuat yang baru, seperti yang harus kita lakukan jika addEventListener
digunakan untuk menambahkan acara menggunakan fungsi anonim yang tidak dapat kami hapus removeEventListener
. Ini juga dapat dilakukan melalui konsol browser dengan memeriksa elemen, menyalin kode HTML, menghapus kode HTML, dan kemudian menempelkan kode HTML di tempat yang sama.
Itu juga dapat dilakukan lebih cepat dan otomatis melalui JavaScript:
var oldNode = document.getElementById("lyca_login_mobile_no");
var newNode = oldNode.cloneNode(true);
oldNode.parentNode.insertBefore(newNode, oldNode);
oldNode.parentNode.removeChild(oldNode);
Pembaruan: jika aplikasi web dibuat menggunakan kerangka kerja JavaScript seperti Angular, tampaknya solusi sebelumnya tidak berfungsi atau merusak aplikasi. Solusi lain untuk memungkinkan menempelkan adalah menyetel nilai melalui JavaScript:
document.getElementById("lyca_login_mobile_no").value = "username";
Saat ini, saya tidak tahu apakah ada cara untuk menghapus semua validasi formulir dan peristiwa pembatasan tanpa merusak aplikasi yang seluruhnya ditulis dalam JavaScript seperti Angular.