Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum erhält mein Userscript bei der Verwendung von onclick den Fehler „Uncaught ReferenceError: Function Not Defined' und wie kann ich ihn beheben?

Linda Hamilton
Freigeben: 2024-11-20 03:51:01
Original
173 Leute haben es durchsucht

Why Does My Userscript Get an

Uncaught ReferenceError: Function Not Defined with OnClick

Beim Versuch, mithilfe eines Benutzerskripts benutzerdefinierte Emotes zu einer Website hinzuzufügen, kann es zu einer Fehlermeldung kommen, die besagt: „Uncaught ReferenceError: Funktion ist nicht definiert“ beim Klicken auf eine Schaltfläche mit einem Onclick-Attribut.

Verstehen des Problem

Benutzerskripte arbeiten in einer Sandbox-Umgebung und verhindern den direkten Zugriff auf Funktionen, die im Bereich der Zielwebseite vorhanden sind. Das onclick-Attribut nutzt diesen Webseitenbereich, was dazu führt, dass es bei Verwendung in einem Benutzerskript fehlschlägt.

Lösung: Verwendung von addEventListener()

Um dieses Problem zu beheben, vermeiden Sie die Verwendung von onclick() und ähnlichen Attributen in Benutzerskripten. Entscheiden Sie sich stattdessen für die Methode addEventListener() (oder eine entsprechende Bibliotheksfunktion wie jQuery .on() für diesen Zweck).

Umschreiben des Codes

Zum Beispiel der folgende Code mit onclick:

something.outerHTML += '<input onclick="resetEmotes()">
Nach dem Login kopieren

Kann mit addEventListener() umgeschrieben werden:

something.outerHTML += '<input>
Nach dem Login kopieren

Loop und Event Listener Änderungen

Vermeiden Sie außerdem die direkte Übergabe von Daten an Ereignis-Listener mit Code wie diesem:

emoteTab[2].innerHTML += '<span>
Nach dem Login kopieren

Verwenden Sie stattdessen Datenattribute und fügen Sie Ereignis-Listener separat hinzu, wie unten gezeigt:

for (i = 0; i < EmoteURLLines.length; i++) {
  if (checkIMG(EmoteURLLines[i])) {
    emoteTab[2].innerHTML += '<span>
Nach dem Login kopieren

Im AnhangEmote Funktion:

function appendEmote(zEvent) {
  var emoteUsage = this.getAttribute("data-usage");
  shoutdata.value += emoteUsage;
}
Nach dem Login kopieren

Warnungen

Vermeiden Sie die Wiederverwendung derselben ID für mehrere Elemente, da diese ungültig ist. Jede Seite kann nur eine Instanz einer bestimmten ID haben.

Außerdem Seien Sie vorsichtig bei der Verwendung von .outerHTML oder .innerHTML, da diese vorhandene Ereignishandler von betroffenen Knoten entfernen.

Das obige ist der detaillierte Inhalt vonWarum erhält mein Userscript bei der Verwendung von onclick den Fehler „Uncaught ReferenceError: Function Not Defined' und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage