Как я могу сгенерировать динамический Javascript? - PullRequest
5 голосов
/ 10 февраля 2009

Я отображаю страницу, используя YUI. и в зависимости от пользователя мне нужно изменить способ его отображения. Это изменение не может быть параметризовано, оно радикальное и разное для каждого пользователя.

Скажите, пожалуйста, как я могу генерировать Javascript динамически?

Ответы [ 4 ]

9 голосов
/ 11 февраля 2009

Лично я использую php-файл для передачи объекта JavaScript, состоящего из некоторых базовых сеансов и внутренних настроек, ничего критически важного, поскольку передача информации клиенту не слишком безопасна, но я считаю, что он может следовать тем же принципам, что Вы ищете.

Точно так же я использую это для отображения определенных элементов после входа клиента, хотя вся авторизация по-прежнему выполняется на стороне сервера. Если мой обработчик сеанса дает файлу PHP все в порядке, он выводит объект JavaScript с использованием строки heredoc PHP, в противном случае он ничего не выводит. Вы можете использовать атрибуты этого объекта для сравнения или вывести только JavaScript для отображения определенной страницы на основе настроек в вашем php-файле.

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);
2 голосов
/ 10 февраля 2009

Вероятно, вы можете создать два отдельных файла сценария Java и включить нужный файл в зависимости от типа пользователя.

псевдокод

If user_type is One
    <Script src='one.js' type='javascript'></script>
else
    <Script src='other.js' type='javascript'></script>
End If
0 голосов
/ 10 февраля 2009

Небольшая проработка здесь, безусловно, поможет вам получить более подробный и полезный ответ. Тем не менее, вы можете легко использовать функции, объявленные внутри оператора if, чтобы обеспечить различное взаимодействие для разных пользователей.

A очень базовый пример:

<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>
0 голосов
/ 10 февраля 2009

JavaScript имеет функцию eval, поэтому я думаю (я не пробовал), что вы можете сгенерировать JavaScript, записав его в строковую переменную (а затем вызвав eval для этой строковой переменной).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...