11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour

Pour diverses raisons qu'il serait trop long d'exposer, je suis conduit à faire le design suivant:
1) on appelle une page html: display.html?data=trucmuche
2) dans le fichier display.html, il y a un script en ligne qui analyse la chaine de caractères "trucmuche" et en déduit le nom d'un fichier JavaScript à appeler, par exemple

    document.write('<script type="text/javascript" src="' + data + '/bidule.js"></script>');

ce qui permet d'intégrer ce fichier à la volée.
Les essais que j'ai faits de ce code ont l'air de fonctionner, mais j'ai le sentiment que ce design est un peu "sensible".
Avant de poursuivre dans cette voie, j'aimerais votre avis et vos conseils pour améliorer ce bout de code.
Merci de vos conseils
Administrateur
Oui cela semble sensible car on peut facilement (en l'état) faire une injection de code avec un autre fichier JavaScript. Quelques protections supplémentaires peuvent être utiles... Pour vérifier la nature du contenu de la variable, ou passer plutôt par du PHP... et encore... À partir du moment où l'on peut écrire n'importe quoi sur le document il vaut mieux éviter Smiley cligne

Sans les considérations de sécurité, on peut aussi utiliser le "hash", par exemple display.html#trucmuche puis la variable document.location.hash qui contiendra cette chaîne.
Merci de tes conseils. Il faut effectivement que le programme définitif fasse des contrôles sur la validité du nom du fichier JS, mais c'est justement l'objectif du code qui calcule l'adresse du fichier à appeler en fonction de l'environnement.
L'un des problèmes que je rencontre, c'est que je dois mettre ce bout de code entre les mains de personnes qui ont leurs habitudes de travail à ne pas perturber. En particulier il faut que ça marche sans php, du moins en local sur leur PC.
Le point qui m'inquiète pour le moment c'est d'assurer que ce mécanisme consistant à créer dynamiquement une référence à un fichier JS pendant le chargement de la page va fonctionner correctement, et que ce fichier sera bien chargé au bon moment quand les fichiers sont sur le serveur HTTP. Le fait que les tests marchent correctement ne signifie pas grand chose. Est-ce qu'on peut assurer qu'on ne va pas trouver un navigateur qui, dans le but louable d'améliorer les performances, ne prend pas en compte le chargement d'un fichier de ce genre? J'ai déjà pris la précaution de mettre le code de génération en ligne dans la page, et pas dans un fichier nécessitant un chargement. J'espère que c'est suffisant.

J'avais également pensé à une solution basée sur le chargement des données par un fichier xml ou json, mais ça complique inutilement le code avec un appel obligatoire à une fonction de chargement.
Et puis je n'ai jamais fait marcher de l'AJAX en local, je préfère ne pas me lancer là dedans si je peux éviter.