Вход

Просмотр полной версии : Запутался с регуляркой


zhurchik
12.02.2015, 22:47
Не могу достать весь код из тега <script>
Нужно учесть переносы строк, но я вписываю \s* по всякому пробовал, ни работает


// В строке (переменной) d "содержится" куча предложений, переносов строк, пробелов а так же тег <script> в котором JS код который нужно выдернуть
d.replace(/<script type="text\/javascript">(.+)<\/script>)/mg,function(str, p1)
{
alert(p1);//Выводим полученный результат

return "";
});

Vlasenko Fedor
13.02.2015, 00:10
Можешь обїяснить зачем єто извращение нужно?

zhurchik
13.02.2015, 00:38
Poznakomlus,
Через innerHTML не рекомендуется вставлять JS код, да и не везде такой подход работает, а мне нужно выдернуть весь JS до того как данные будут вставлены через innerHTML и подключить код через createElement("script")....

рони
13.02.2015, 00:58
zhurchik,
:-?

<!DOCTYPE HTML>

<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>

<body>
<script>
document.body.innerHTML.replace(/<scri[\s\S]*?>([\s\S]*?)<\/scri/mg,function(str, p1)
{
alert(p1);//Выводим полученный результат

return "";
});
</script>
</body>

</html>

Vlasenko Fedor
13.02.2015, 00:59
через через innerHTML код вставляется но не исполняется :)

<div id="test"></div>
<script>
test.innerHTML = '<script>alert("Yes")<\/script>';
var scr = document.querySelector('script');
eval(scr.text);
</script>

zhurchik
13.02.2015, 09:54
рони,
Спасибо, друг)))

zhurchik
13.02.2015, 09:55
Poznakomlus,
Я знаю. Но код лучше запустить до того как будет вставлено содержимое, поэтому я решил для начала его выдернуть

zhurchik
13.02.2015, 13:08
Poznakomlus,
Дело в том, что содержимое от сервера я получаю в виде HTML, а сделано это для того, чтобы сайт работал даже когда JS отключен (то-бишь, для поисковиков), то-есть, с таким подходом можно будет делиться ссылками и т.д., а если все это дело посадить на JSON или XML то по прямой ссылке уже не перейти.
Вообще как то так, надеюсь смог рассказать!