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

Comment exécuter en toute sécurité des fonctions JavaScript à partir de chaînes ?

Susan Sarandon
Libérer: 2024-10-27 19:10:01
original
778 Les gens l'ont consulté

How to Safely Execute JavaScript Functions from Strings?

Appel de fonctions JavaScript à partir de chaînes

En JavaScript, vous pouvez rencontrer des scénarios dans lesquels vous devez convertir une chaîne contenant un appel de fonction en une exécution de fonction réelle. Voici une solution complète :

Prérequis :

  • Identifiez la chaîne représentant l'appel de fonction, par exemple, "settings.functionName '(' t.parentNode.id ')'".
  • Déterminez le nom de la fonction et son(ses) argument(s) : "clickedOnItem", "IdofParent".

Solution :

  1. Récupérer la fonction cible de la portée globale :
<code class="js">var fn = window[settings.functionName];</code>
Copier après la connexion

Cette étape obtient une référence à la fonction identifiée par settings.functionName, qui dans ce cas est "clickedOnItem".

  1. Vérifiez que la valeur récupérée est bien une fonction :
<code class="js">if(typeof fn === 'function') {
    fn(t.parentNode.id);
}</code>
Copier après la connexion

Cette étape garantit que la valeur récupérée est bien une fonction. Si tel est le cas, il exécute la fonction avec l'argument spécifié.

Dans l'exemple fourni, le code traduirait la chaîne en un appel de fonction direct :

<code class="js">clickedOnItem(IdofParent);</code>
Copier après la connexion

Remarque supplémentaire :

Bien que la méthode eval() puisse également évaluer des chaînes sous forme de code, elle est généralement déconseillée en raison de problèmes de sécurité. La solution présentée ici offre une alternative plus sûre.

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