我使用YUI渲染页面。并且根据用户的不同,我需要更改它的呈现方式。这种变化不是可以参数化的,对于每个用户来说都是极其不同的。
请告诉我如何动态生成Javascript?
答案 0 :(得分:9)
我个人使用php文件来传递由一些基本会话和内部设置组成的JavaScript对象,没有任何关键任务,因为将信息传递给客户端并不过分安全,但我相信它可能遵循与什么相同的原则你在寻找。
类似地,我使用它来在客户端登录后显示某些元素,尽管所有授权仍在服务器端完成。如果我的会话处理程序给PHP文件ok,它会使用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);
答案 1 :(得分:2)
您可以创建两个单独的Java脚本文件,并包含所需的文件,具体取决于用户类型。
<强>伪代码强>
If user_type is One
<Script src='one.js' type='javascript'></script>
else
<Script src='other.js' type='javascript'></script>
End If
答案 2 :(得分:0)
JavaScript有一个eval
函数,所以我认为(我还没有尝试过)你可以通过将它写入一个字符串变量(然后在该字符串变量上调用eval
来生成JavaScript)
答案 3 :(得分:0)
这里的一些细节肯定会帮助您获得更具描述性和有用的答案。但是,考虑到这一点,您可以轻松地使用if语句中声明的函数为不同的用户提供截然不同的体验。
非常基本示例:
<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>