Fire Javascript, полученный из веб-сокета - PullRequest
2 голосов
/ 28 апреля 2011

Я сейчас играю с WebSockets, и мне хотелось бы иметь следующий шаблон проектирования.

Подключитесь к моему веб-сокету на сервере, сервер отправляет JavaScript в браузер, чтобы сообщить ему, как взаимодействовать с пользователем. Я нашел метод getScript JQuery, который загружает скрипт в фоновом режиме и выполняет его при загрузке. Я хочу сделать то же самое, но с сообщением, полученным из Websocket.

Итак, в общем, я хочу сделать ...

// Create a socket
var socket = new WebSocket('myURL')

// Message received on the socket
socket.onmessage = function(event) {
    executeJS(event.data);
} 

Какой код мне нужно заменить executeJS, чтобы запустить этот javascript? Возможно ли это?

Полагаю, этот вопрос не имеет прямого отношения к javascript, но как мне взять фрагмент текста и выполнить его как Javascript.

Ответы [ 5 ]

3 голосов
/ 28 апреля 2011

Поскольку вы используете jQuery, вы можете использовать jQuery.globalEval. В качестве альтернативы вы можете использовать eval, но globalEval имеет некоторые преимущества с точки зрения контекста, в котором он работает.

2 голосов
/ 28 апреля 2011

Функция, которую вы ищете: eval().

Пожалуйста, не забывайте, что она звучит как evil по причине;)

1 голос
/ 28 апреля 2011

Функция eval оценивает код в локальная область , для кода, который должен оцениваться в глобальная область , используйте косвенный eval , лучший способ вызвать косвенный Eval:

(1, eval)(yourCode);

Существует также другой способ динамического выполнения кода:

Также рекомендуется использовать динамический элемент скрипта:

var script = document.createElement('script');

// detect browser or feature first, only one of these should be used
// for IE
script.text = yourCode;
// for other browser
script.appendChild(document.createTextNode(yourCode));

var head = document.head || document.getElementsByTagName('head')[0];
head.insertBefore(head, head.lastChild);
0 голосов
/ 28 апреля 2011

Вы ищете функцию eval: http://www.w3schools.com/jsref/jsref_eval.asp Но будьте осторожны, это означает, что потенциально небезопасный код JavaScript может быть выполнен.

0 голосов
/ 28 апреля 2011

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

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