Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Нужно из всего кода оставить только BODY, но body вырезается. Торможу (https://javascript.ru/forum/jquery/69957-nuzhno-iz-vsego-koda-ostavit-tolko-body-no-body-vyrezaetsya-tormozhu.html)

Stenli 30.07.2017 20:58

Нужно из всего кода оставить только содержимое BODY, но body вырезается
 
Есть код под спойлером:

$(document).ready(function() {

    var Final = '';

    $('#sendTo').on('click', function () {

        var insertData = $('#insertArea').val();
        var div = $("<div>", {html : insertData});

// only body content with internal tags

        var bodyVal = $('body', div).html();
        $(div).empty();
        $(div).remove();
        $(div).html('bodyVal');

// find and replace all href links to {{ $landing_url }}

        $('a', div).attr("href","{{ $landing_url }}");

// find and replace all img to {{ $landing_url }}

        $('img', div).each(function (i,el) {
            var srcVal=el.src.substr(el.src.lastIndexOf("/")+1,el.src.length);
            $(this).attr("src","{{ asset('layers/'. $template_folder .'/img/" + srcVal + "') }}");
        });

// delete tag script, iframe, noscript with content

        $('script', div).empty();
        $('noscript', div).empty();
        $('iframe', div).empty();

        $('script', div).remove();
        $('noscript', div).remove();
        $('iframe', div).remove();

// display result

        Final += "@include('layers.header')<body>" + div.html() + "@include('layers.footer')";
        $('#pastArea').val(Final);

    });

});

Задумка такая, что из:

<doctype! html>
<html>
<head></head>
<body>
<div></div>
</body>
</html>

Должно оставаться это:
<div></div>

Но при конвертации исчезают теги <head>, <body>, <html> при этом все их содержимое остается, хотя я jQuery такого не просил. А потому я не могу извлечь содержимое <body>.

Что не так? Догадываюсь, что дело в 7,8 строке кода, но я там не очень могу понять.

рони 30.07.2017 21:25

Stenli,
:-? подожду телепата ...

Stenli 30.07.2017 21:30

Цитата:

Сообщение от рони (Сообщение 460117)
Stenli,
:-? подожду телепата ...

Профессор, продуктивнее будет если скажете, где я сморозил или что не понятно. Зачем пальцы-то гнуть?

рони 30.07.2017 21:33

Stenli,
я не понимаю, что вы хотите сделать.

Stenli 30.07.2017 21:41

Понял, осознал.

Это ответвление темы этой: http://javascript.ru/forum/jquery/69...lavleniya.html

Суть такая, что в первый textarea помещается код HTML, а во втором textarea должен появится сконвертированный, очищенный код.

То есть я вставляю код
<doctype! html>
<html>
<head></head>
<body>
<div></div>
</body>
</html>


jQuery думает и выдает это, удаляя все ненужное:
<div></div>


Только jQuery почему-то удаляет теги, которые я не просил удалять. В частности тег <body>.

рони 30.07.2017 21:51

Stenli,
ок -- видимо браузер считает что одного body на страницу достаточно.

Stenli 30.07.2017 21:55

Мы сегодня похоже не понимаем друг друга :-)

Браузер тут не должен ничего понимать, мне кажется. Все изменения происходят не на сайте, а внутри формы textarea - объяснил как мог.

Это нечто похожее, как вы мне советовали, когда был вопрос об автооглавлении (пример по ссылке выше). Только тут не оглавление сделать, а вытащить некоторое содержимое.

рони 30.07.2017 22:15

Stenli,
пока не знаю

Stenli 31.07.2017 00:17

Цитата:

Сообщение от рони (Сообщение 460123)
Stenli,
ок -- видимо браузер считает что одного body на страницу достаточно.

Кажется вник в эту фразу. А потому стал искать по просторам, нашел схожую проблему у одного человека. У него частично получилось сделать то, что нужно - извлечь содержимое BODY.

Только помогите разобраться, как он это провернул: ссыль

Или тут что-то нарешали, но я не пойму как: ссыль

рони 31.07.2017 01:41

Stenli,
ждите специалиста...
Цитата:

Сообщение от Stenli
нужно - извлечь содержимое BODY.

Цитата:

Сообщение от Stenli
jQuery думает и выдает это, удаляя все ненужное:
<div></div>

<div></div> это же и есть содержимое или вам нужно что-то иное?


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