2009-02-10 8 views
5

Je rends une page en utilisant YUI. et en fonction de l'utilisateur, j'ai besoin de changer la façon dont il est rendu. Ce changement n'est pas quelque chose qui peut être paramétré, c'est radical et différent pour chaque utilisateur.Comment puis-je générer du Javascript dynamique?

Dites-moi comment générer du Javascript dynamiquement?

Répondre

9

j'utilise un fichier php pour passer un objet JavaScript composé d'une session de base et les paramètres internes, la mission de rien de critique que la transmission d'informations au client n » trop sûr, mais je crois que cela pourrait suivre les mêmes principes que ce que vous cherchez.

De même, je l'utilise pour afficher certains éléments une fois que le client est connecté, bien que toute l'autorisation soit toujours effectuée côté serveur. Si mon gestionnaire de session donne l'ok au fichier PHP, il sort un objet JavaScript en utilisant une chaîne PHP heredoc, sinon il ne sort rien. Vous pouvez comparer les attributs de cet objet, ou vous ne pouvez afficher que le JavaScript correspondant à la façon dont une page donnée doit être rendue, en fonction des paramètres de votre fichier php.

HTML:

<script src="common/javascript/php_feeder.php" type="text/javascript"></script> 

PHP:

//my session handler authorisation check has been removed 
//although you could place your own up here. 

//assuming session was authorised 
//set content type header 
header("content-type: application/x-javascript"); 

$js_object = <<<EOT 
var my_object = { 
    my_attr: '{$my_attr}', 
    my_attr2: '{$my_arrt2}', 
    etc: '{$etc}' 
} 
EOT; 

print($js_object); 
+0

Ceci à mon avis est la meilleure solution jusqu'à présent pour le problème donné. –

2

Vous pouvez probablement créer deux fichiers de script Java distincts et inclure le fichier requis, en fonction du type d'utilisateur.

pseudocode

If user_type is One 
    <Script src='one.js' type='javascript'></script> 
else 
    <Script src='other.js' type='javascript'></script> 
End If 
0

JavaScript a une fonction eval, donc je pense (je ne l'ai pas essayé) que vous pouvez générer JavaScript en écrivant dans une variable chaîne (puis appeler eval sur cette variable de chaîne).

+0

un possible, mais evals sont très précaires à utiliser. –

0

Un peu d'élaboration ici serait très certainement aider à vous obtenir une réponse plus descriptive et utile. Dans cet esprit, cependant, vous pourriez facilement utiliser les fonctions déclarées à l'intérieur d'une instruction if pour fournir des expériences distinctement variées pour différents utilisateurs.

Un très exemple de base:

<script> 
function do_something(userType) 
{ 
if (userType == 'A') 
{ 
// everything you need to do for userType A 
} 
if (userType == 'B') 
{ 
// everything you need to do for userType B 
} 
} 
</script> 
+0

Je dirais, en vérifiant le type d'utilisateur devrait être une chose côté serveur au lieu d'utiliser un javascript côté client. (Pour les vulnérabilités évidentes) –

+0

Cela dépend entièrement de la façon dont il rassemble les données et s'il est compétent dans une langue côté serveur; il pourrait facilement utiliser la langue qu'il connaît (JavaScript, semble-t-il), et stocker le type de l'utilisateur dans une variable JS; accordé, oui, il serait avantageux d'obtenir cette variable côté serveur. –

+0

C'est une solution très inefficace et peu sûre à mon avis. De même, comment vais-je appeler cette fonction exactement? –

Questions connexes