如何生成动态Javascript?

时间:2009-02-10 07:02:58

标签: php javascript yui

我使用YUI渲染页面。并且根据用户的不同,我需要更改它的呈现方式。这种变化不是可以参数化的,对于每个用户来说都是极其不同的。

请告诉我如何动态生成Javascript?

4 个答案:

答案 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>