Um die Antworten zu vervollständigen, finden Sie hier Beispiele aus der Praxis zum Entfernen von Ereignissen, wenn Sie Websites besuchen und keine Kontrolle über den generierten HTML- und JavaScript-Code haben.
Einige nervige Websites verhindern, dass Sie Benutzernamen in Anmeldeformulare kopieren und einfügen können. Dies kann leicht umgangen werden, wenn das onpaste
Ereignis mit dem onpaste="return false"
HTML-Attribut hinzugefügt wird. In diesem Fall müssen wir nur mit der rechten Maustaste auf das Eingabefeld klicken, in einem Browser wie Firefox "Element überprüfen" auswählen und das HTML-Attribut entfernen.
Wenn das Ereignis jedoch wie folgt über JavaScript hinzugefügt wurde:
document.getElementById("lyca_login_mobile_no").onpaste = function(){return false};
Wir müssen das Ereignis auch über JavaScript entfernen:
document.getElementById("lyca_login_mobile_no").onpaste = null;
In meinem Beispiel habe ich die ID "lyca_login_mobile_no" verwendet, da dies die Texteingabe-ID war, die von der Website verwendet wurde, die ich besuchte.
Eine andere Möglichkeit, das Ereignis zu entfernen (wodurch auch alle Ereignisse entfernt werden), besteht darin, den Knoten zu entfernen und einen neuen zu erstellen, wie wir es tun müssen, wenn addEventListener
Ereignisse mit einer anonymen Funktion hinzugefügt werden, mit der wir nicht entfernen könnenremoveEventListener
. Dies kann auch über die Browserkonsole erfolgen, indem ein Element überprüft, der HTML-Code kopiert, der HTML-Code entfernt und der HTML-Code an derselben Stelle eingefügt wird.
Es kann auch schneller und automatisierter über JavaScript erfolgen:
var oldNode = document.getElementById("lyca_login_mobile_no");
var newNode = oldNode.cloneNode(true);
oldNode.parentNode.insertBefore(newNode, oldNode);
oldNode.parentNode.removeChild(oldNode);
Update: Wenn die Web-App mit einem JavaScript-Framework wie Angular erstellt wurde, funktionieren die vorherigen Lösungen anscheinend nicht oder beschädigen die App nicht. Eine andere Problemumgehung, um das Einfügen zu ermöglichen, besteht darin, den Wert über JavaScript festzulegen:
document.getElementById("lyca_login_mobile_no").value = "username";
Im Moment weiß ich nicht, ob es eine Möglichkeit gibt, alle Ereignisse zur Formularüberprüfung und -beschränkung zu entfernen, ohne eine App zu beschädigen, die vollständig in JavaScript wie Angular geschrieben ist.