9

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

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

4

4 回答 4

12

我个人使用 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);
于 2009-02-10T23:01:15.293 回答
2

您可能可以创建两个单独的 Java 脚本文件,并根据用户类型包含所需的文件。

伪代码

If user_type is One
    <Script src='one.js' type='javascript'></script>
else
    <Script src='other.js' type='javascript'></script>
End If
于 2009-02-10T07:07:37.543 回答
0

JavaScript 有一个eval函数,所以我认为(我没有尝试过)您可以通过将其写入字符串变量(然后调用eval该字符串变量)来生成 JavaScript。

于 2009-02-10T07:09:54.743 回答
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>
于 2009-02-10T07:24:23.290 回答