In einem Benutzerskript führt ein Versuch, eine Funktion über ein onclick-Attribut aufzurufen, zu einem Nicht erfasster Referenzfehler: Funktion ist nicht definiert.
Traditionelles Onclick-Attributverhalten, bei dem die Funktion im Skript definiert ist, funktioniert in Benutzerskripten aufgrund von Sandboxing-Mechanismen nicht.
Um dieses Problem zu beheben, verwenden Sie immer addEventListener() anstelle des onclick-Attributs.
Ersetzen Sie das onclick-Attribut durch:
document.getElementById("ElementID").addEventListener("click", functionName, false);
DOM-Überschreibungen und Ereignishandler
Vermeiden Sie die mehrfache Verwendung von innerHTML oder OuterHTML zum Überschreiben von DOM-Elementen, da dadurch vorhandene Ereignishandler entfernt werden.
Eindeutige IDs
Stellen Sie sicher, dass jedes Element eine eindeutige ID hat. Die Wiederverwendung von IDs führt zu Validierungsproblemen.
In diesem Code wurde das onclick-Attribut durch addEventListener() ersetzt und das Problem des DOM-Überschreibens wurde behoben:
for (i = 0; i < EmoteURLLines.length; i++) { if (checkIMG (EmoteURLLines[i])) { emoteTab[2].innerHTML += '<span>
Das obige ist der detaillierte Inhalt vonWarum verursacht das onclick-Attribut meines Userscripts einen „Uncaught ReferenceError: Funktion ist nicht definiert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!