Как получить переменную 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 почти наверняка сработает в любом случае, но может быть опасным