2009-02-10 8 views
5

Represento una página usando YUI. y dependiendo del usuario, necesito cambiar la forma en que se representa. Este cambio no es algo que pueda parametrizarse, es drástico y diferente para cada usuario.¿Cómo puedo generar Javascript dinámico?

Por favor dígame ¿cómo puedo generar Javascript dinámicamente?

Respuesta

9

Yo personalmente uso un archivo php para pasar un objeto JavaScript compuesto por algunos sesión básica y los ajustes internos, la misión no crítica como pasar información a la ISN cliente Es demasiado seguro, pero creo que podría seguir los mismos principios que lo que está buscando.

Del mismo modo, utilizo esto para mostrar ciertos elementos una vez que el cliente ha iniciado sesión, aunque toda la autorización todavía se realiza en el lado del servidor. Si mi manejador de sesión le da el archivo PHP el ok, genera un objeto JavaScript usando una cadena PHP heredoc, de lo contrario no genera nada. Puede usar los atributos de este objeto para comparar, o solo puede generar el JavaScript de cómo se debe representar una página determinada, según la configuración en su archivo 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

Esto en mi opinión es la mejor solución hasta ahora para el problema dado. –

2

Probablemente pueda crear dos archivos de script Java por separado e incluir el archivo requerido, según el tipo de usuario.

Pseudocódigo

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

JavaScript tiene una función eval, por lo que creo (no he probado) que se puede generar JavaScript escribiéndolo en una cadena variable (y luego llamar eval en ese variable de cadena).

+0

Un posible, pero evals son muy inseguros para su uso. –

0

Un poco de elaboración aquí sin duda ayudaría a obtener una respuesta más descriptiva y útil. Sin embargo, eso en mente podría fácilmente usar funciones declaradas dentro de una declaración if para proporcionar experiencias claramente variadas para diferentes usuarios.

Un muy ejemplo básico:

<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

Diría que buscar el tipo de usuario debería ser algo del lado del servidor en lugar de usar un javascript del lado del cliente. (Para las vulnerabilidades obvias) –

+0

Depende enteramente de cómo está reuniendo los datos y si es o no competente en un lenguaje de servidor; podría usar fácilmente el lenguaje que conoce (JavaScript, parece) y almacenar el tipo del usuario en una variable JS; concedido, sí, sería beneficioso obtener esta variable del lado del servidor. –

+0

Esta es una solución muy ineficiente e insegura en mi opinión. ¿Cómo exactamente voy a hacer una llamada a esta función? –

Cuestiones relacionadas