Maison > interface Web > js tutoriel > le corps du texte

Pourquoi l'attribut onclick de mon script utilisateur provoque-t-il une « erreur de référence non détectée : la fonction n'est pas définie » ?

Susan Sarandon
Libérer: 2024-11-19 06:58:02
original
273 Les gens l'ont consulté

Why Does My Userscript's onclick Attribute Cause an

Erreur de référence non résolue : la fonction n'est pas définie avec onclick

Problème

Dans un script utilisateur, une tentative d'appel d'une fonction via un attribut onclick entraîne un Uncaught ReferenceError : la fonction n'est pas définie.

Enquête

Le comportement traditionnel de l'attribut onclick, où la fonction est définie dans le script, ne fonctionne pas dans les scripts utilisateur en raison des mécanismes de sandboxing.

Solution

Pour résoudre ce problème, utilisez toujours addEventListener() au lieu de l'attribut onclick.

Code Refactor

Remplacez l'attribut onclick par :

document.getElementById("ElementID").addEventListener("click", functionName, false);
Copier après la connexion

Préoccupations supplémentaires

Écrasements du DOM et gestionnaires d'événements

Évitez d'utiliser innerHTML ou externalHTML pour écraser des éléments DOM plusieurs fois, car cela supprime les gestionnaires d'événements existants.

Identifiants uniques

Assurez-vous que chaque élément possède un identifiant unique. La réutilisation des identifiants crée des problèmes de validation.

Exemple

Dans ce code, l'attribut onclick a été remplacé par addEventListener() et le problème d'écrasement du DOM a été résolu :

for (i = 0; i < EmoteURLLines.length; i++) {
    if (checkIMG (EmoteURLLines[i])) {
        emoteTab[2].innerHTML += '<span>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal