Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2017, 10:07
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

как обработать или распарсить javascript
Здравствуйте!

суть такая я делаю AJAX запрос получаю страничку в которой есть код

<script type="text/javascript">
var number = '583';
и здесь еще куча кода js
</script>


как мне
а) выполнить этот код и получить то что он делает
б) возможно ли его распарсить и получить именно javascript кусок кода в теге <script type="text/javascript"></script>

?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2017, 10:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от jay-S
выполнить этот код
Как вариант, вставить в
<head></head>


Сообщение от jay-S
возможно ли его распарсить и получить именно javascript кусок кода в теге
<script type="text/javascript"></script>
Разумеется можно!

var str='<script type="text/javascript">';
str+='alert("Test");';
str+='</'+'script>';
alert(str.match(/<script type="text\/javascript">(.*)(?=<\/script>)/)[1]);
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2017, 10:43
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

хорошо вот в js который на странице есть в теге javascript такая строчка

KAPI=ADAS('&*yikku6t*78FDS43=rrwe676jUY%4gfdgH568' );


как мне получить эту строчку, а в идеале то что содержится в скобках тоесть вот это &*yikku6t*78FDS43=rrwe676jUY%4gfdgH568
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2017, 10:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от jay-S
в идеале то что содержится в скобках тоесть вот это &*yikku6t*78FDS43=rrwe676jUY%4gfdgH568
Дык!

var str='KAPI=ADAS(\'&*yikku6t*78FDS43=rrwe676jUY%4gfdgH568\' ); alert( \'tmp\' );';
alert(str.match(/KAPI=ADAS\('(.*?)(?=' \);)/)[1]);
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2017, 11:52
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от jay-S
а) выполнить этот код и получить то что он делает
var response = '<script type="text/javascript">alert("Foo")<\/script><div>Bla</div><script>alert("Bar")<\/script>';

var pattern = /<script[^>]*?>([\s\S]+?)<\/script>/gi;
var result;

while(result = pattern.exec(response)) {
     eval(result[1]);
}

Последний раз редактировалось ruslan_mart, 09.06.2017 в 11:59.
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2017, 12:03
Аспирант
Отправить личное сообщение для jay-S Посмотреть профиль Найти все сообщения от jay-S
 
Регистрация: 05.10.2011
Сообщений: 76

спс всем!
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2017, 14:02
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от Ruslan_xDD
eval(result[1]);
За такое ранее тут минусовали карму!
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2017, 18:43
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

ksa, а что не так? eval не стоит использовать там, где это не безопасно. А тут, по сути, нужно запустить свои же скрипты, так что разницы особо нет, или же создать новый тэг script.
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2017, 20:31
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Вместо eval лучше использовать либо (0,eval), либо Function, либо тег скрипт.

просто eval плох тем, что выполняет код в локальном контексте, а не потому что в принципе выполняет код из строки. От этого бывает ряд проблем.

Ну и, конечно, если возник сабж, то что-то не совсем правильно в архитектуре. Подозреваю, что идеальным результатом рефакторинга был бы запрос json, в котором есть данные под шаблонизацию и данные для выполнения некоторого скрипта, уже имеющегося на странице.
Ответить с цитированием
  #10 (permalink)  
Старый 13.06.2017, 08:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от Ruslan_xDD
а что не так?
Этот вопрос теперь некому адресовать... Те ребята давно тут не появляются.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать переданные функции параметры как массив? javascript_pupil Общие вопросы Javascript 5 19.08.2016 13:59
Получить произвольную страницу в браузере и обработать через JavaScript xintrea AJAX и COMET 3 09.07.2015 05:32
javascript обфускатор или как правильно скрыть код syegorius Общие вопросы Javascript 1 19.09.2012 02:58
javascript on click или event - Контроль действия пользователя. Ffendlix Events/DOM/Window 3 12.09.2012 12:28
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34