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.
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.
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).
Zum Beispiel der folgende Code mit onclick:
something.outerHTML += '<input onclick="resetEmotes()">
Kann mit addEventListener() umgeschrieben werden:
something.outerHTML += '<input>
Vermeiden Sie außerdem die direkte Übergabe von Daten an Ereignis-Listener mit Code wie diesem:
emoteTab[2].innerHTML += '<span>
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>
Im AnhangEmote Funktion:
function appendEmote(zEvent) { var emoteUsage = this.getAttribute("data-usage"); shoutdata.value += emoteUsage; }
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!