Aby uzupełnić odpowiedzi, oto rzeczywiste przykłady usuwania zdarzeń, gdy odwiedzasz strony internetowe i nie masz kontroli nad generowanym kodem HTML i JavaScript.
Niektóre irytujące witryny uniemożliwiają kopiowanie i wklejanie nazw użytkowników w formularzach logowania, co można by łatwo ominąć, gdyby onpaste
zdarzenie zostało dodane z onpaste="return false"
atrybutem HTML. W tym przypadku wystarczy kliknąć prawym przyciskiem myszy pole wejściowe, wybrać opcję „Sprawdź element” w przeglądarce takiej jak Firefox i usunąć atrybut HTML.
Jeśli jednak zdarzenie zostało dodane za pomocą JavaScript w następujący sposób:
document.getElementById("lyca_login_mobile_no").onpaste = function(){return false};
Będziemy musieli również usunąć zdarzenie za pomocą JavaScript:
document.getElementById("lyca_login_mobile_no").onpaste = null;
W moim przykładzie użyłem identyfikatora „lyca_login_mobile_no”, ponieważ był to identyfikator wprowadzania tekstu używany przez odwiedzaną witrynę internetową.
Innym sposobem na usunięcie zdarzenia (który również usunie wszystkie zdarzenia) jest usunięcie węzła i utworzenie nowego, tak jak musimy to zrobić, jeśli addEventListener
został użyty do dodania zdarzeń przy użyciu funkcji anonimowej, której nie możemy usunąć removeEventListener
. Można to również zrobić za pomocą konsoli przeglądarki, sprawdzając element, kopiując kod HTML, usuwając kod HTML, a następnie wklejając kod HTML w tym samym miejscu.
Można to również zrobić szybciej i zautomatyzować za pomocą JavaScript:
var oldNode = document.getElementById("lyca_login_mobile_no");
var newNode = oldNode.cloneNode(true);
oldNode.parentNode.insertBefore(newNode, oldNode);
oldNode.parentNode.removeChild(oldNode);
Aktualizacja: jeśli aplikacja internetowa została utworzona przy użyciu struktury JavaScript, takiej jak Angular, wygląda na to, że poprzednie rozwiązania nie działają lub nie psują aplikacji. Innym obejściem umożliwiającym wklejanie byłoby ustawienie wartości za pomocą JavaScript:
document.getElementById("lyca_login_mobile_no").value = "username";
W tej chwili nie wiem, czy istnieje sposób na usunięcie wszystkich zdarzeń walidacji formularzy i ograniczeń bez niszczenia aplikacji napisanej w całości w JavaScript, takiej jak Angular.