我使用YUI渲染页面,根据用户的不同,需要改变页面的渲染方式。这种改变不是可以通过参数化实现的,对于每个用户都是不同的。请告诉我如何动态生成Javascript代码?
我个人使用一个PHP文件来传递一个由一些基本会话和内部设置组成的JavaScript对象,因为将信息传递给客户端并不是非常安全的,所以没有传递关键性信息,但我认为这可能遵循你正在寻找的相同原则。
同样地,我使用它来在客户端登录后显示某些元素,尽管所有授权仍然在服务器端完成。如果我的会话处理程序向PHP文件发出确认,它将使用PHP的heredoc字符串输出一个JavaScript对象,否则,它将不输出任何内容。您可以使用此对象的属性进行比较,或者您可以仅根据PHP文件中的设置输出特定页面应如何呈现的JavaScript。
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);
If user_type is One
<Script src='one.js' type='javascript'></script>
else
<Script src='other.js' type='javascript'></script>
End If
JavaScript有一个eval
函数,因此我认为(我没有尝试过),您可以将JavaScript写入字符串变量中(然后在该字符串变量上调用eval
)以生成JavaScript。
<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>