Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   тег script find не находит (https://javascript.ru/forum/events/47411-teg-script-find-ne-nakhodit.html)

max_grim 22.05.2014 20:14

тег script find не находит
 
Здравствуйте! Столкнулся с одной проблемкой... я никак не могу найти тег <script> в html-коде.

Теперь по порядку.

Я отправляю ajax-запрос на другой сайт, он дает ответ в виде html-кода.

далее я делаю так

data = $($.parseHTML(data));


Чуть ниже так( ищу все div на полученном коде)

var html="";
			
            $(data).find("div").each(function(){
             html+=$(this).html();
             });


Все довольно отлично находит.

Но когда делаю так

var html="";
			
            $(data).find("script").each(function(){
             html+=$(this).html();
             });


мне возвращает undefined

В чем же дело? <script> там точно есть

Erolast 22.05.2014 20:21

http://api.jquery.com/jquery.parsehtml/

Наверное, надо установить keepScripts на true.
data = $($.parseHTML(data, document, true));

max_grim 22.05.2014 20:32

find дает пустой ответ. а filter возвращает то что внутри <script></script>

Сейчас это выглядит так

data.filter("script").each(function(){
             html+=$(this).html();
             });

Erolast 22.05.2014 20:42

Цитата:

find дает пустой ответ.
Ну и правильно, ибо у script нет innerHTML.

Цитата:

data.filter("script").each(function(){
html+=$(this).html();
});
Так, а это, чтоли, таки возвращает код? Странно.

max_grim 22.05.2014 20:45

Возвращает что внутри.
Например
function(){
//...
}


То как можно достать полную строку с тегом script вместе?

Мне кажется странным или скорее непонятным, почему когда я ищу div через find то мне возвращается полный код, с тегами div, а когда script через find то пустой ответ?

рони 22.05.2014 20:46

:write: c find неработает
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
   var html="", data = $('body').html();
            $(data).filter("script").each(function(i,el){
             html+= $('<div/>', {html : el}).html();
             });
   alert(html)

})
  </script>
</head>
<body>
<script>
alert(123)
</script>
</body>

</html>

max_grim 22.05.2014 20:50

рони,
к сожалению такого результата я смог добиться и сам. мне нужно целиком с тегами script получить

рони 22.05.2014 21:13

max_grim,
смотрите код выше добавил теги

max_grim 22.05.2014 21:18

рони,
Большое вам спасибо!! Протестирую, отпишу .


Часовой пояс GMT +3, время: 01:52.