Maison  >  Article  >  interface Web  >  Comment exécuter en toute sécurité des fonctions JavaScript à partir de chaînes ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 19:10:01700parcourir

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>

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>

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>

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!

Déclaration:
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