Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何生成动态Javascript?_Php_Javascript_Yui - Fatal编程技术网

Php 如何生成动态Javascript?

Php 如何生成动态Javascript?,php,javascript,yui,Php,Javascript,Yui,我使用YUI呈现页面。根据用户的不同,我需要改变它的渲染方式。这种变化不是可以参数化的,它是剧烈的,对每个用户都是不同的 请告诉我如何动态生成Javascript?您可能可以创建两个单独的Java脚本文件,并根据用户类型包括所需的文件 伪代码 If user_type is One <Script src='one.js' type='javascript'></script> else <Script src='other.js' type='ja

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


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

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

伪代码

If user_type is One
    <Script src='one.js' type='javascript'></script>
else
    <Script src='other.js' type='javascript'></script>
End If
如果用户类型为1
其他的
如果结束

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

这里稍微细化一下肯定会有助于获得更详细、更有用的答案。不过,请记住,您可以轻松地使用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>

函数do_something(userType)
{
如果(userType='A')
{
//需要为userType A执行的所有操作
}
如果(userType='B')
{
//用户类型B需要执行的所有操作
}
}

我个人使用一个PHP文件来传递一个JavaScript对象,该对象由一些基本会话和内部设置组成,没有什么比向客户端传递信息更重要的任务了,这并不过分安全,但我相信它可能遵循与您所寻找的相同的原则

类似地,我使用它在客户端登录后显示某些元素,尽管所有授权仍然在服务器端完成。如果我的会话处理程序给PHP文件ok,它将使用PHPEredoc字符串输出一个JavaScript对象,否则,它不会输出任何内容。您可以使用此对象的属性进行比较,或者根据PHP文件中的设置,仅输出特定页面应如何呈现的JavaScript

HTML:


PHP:

//我的会话处理程序授权检查已删除
//虽然你可以把自己的放在这里。
//假设会议得到授权
//设置内容类型标题
标题(“内容类型:应用程序/x-javascript”);

$js_object=我想说,检查用户类型应该是服务器端的事情,而不是使用客户端javascript。(对于明显的漏洞)完全取决于他如何收集数据,以及他是否能够胜任服务器端语言;他可以很容易地使用他所知道的语言(似乎是JavaScript),并将用户的类型存储在JS变量中;当然,是的,获得这个可变的服务器端将是有益的。在我看来,这是一个非常低效和不安全的解决方案。还有,我到底要如何调用这个函数?一个可能的函数,但是evals使用起来非常不安全。我认为这是到目前为止针对给定问题的最佳解决方案。
<script src="common/javascript/php_feeder.php" type="text/javascript"></script>
//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);