Как получить переменную JavaScript?

Со страницы, содержащей (или ссылающейся) на мой JavaScript, я делаю запрос AJAX XHR на внешний веб-сайт.

Внешний веб-сайт возвращает по нашему GET-запросу файл JavaScript, подобный следующему:

var __xxx = {
    // ....
};

Как я могу получить значение переменной __xxx в моем JavaScript?

В настоящее время я изобрел единственный способ удалить var __xxx используя регулярное выражение и проанализируйте оставшееся с помощью анализатора JSON. Есть ли способ лучше?

Внешний веб-сайт может считаться доверенным, если это необходимо, но я бы предпочел не доверять данным с него (используя некоторый безопасный анализатор, такой как JSON).

2 ответа

Решение

Создайте новую функцию, используя строки и Function конструктор. Добавьте 'return _xxx;' и присвойте результат новой переменной, которая доступна в вашем текущем скрипте.

var returned_data = new Function(data + " return _xxx;")()

Это предпочтительнее eval потому что выполнение функции не позволит получить доступ к локальным переменным вне области действия функции.

Я считаю, что ваши лучшие варианты - либо делать то, что вы делаете в данный момент (проанализируйте строку Javascript и JSON.parse это) или использовать eval метод на входящей строке Javascript.

Я бы лично порекомендовал разобрать строку, но это зависит от Javascript, который вы возвращаете с этой конечной точки. Eval почти наверняка сработает в любом случае, но может быть опасным

Другие вопросы по тегам