Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465

Правильно ли так заменять содержимое страницы?

14.03.2024, 12:04. Показов 3259. Ответов 57
Метки js (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

JavaScript
1
2
3
4
5
6
7
8
new_content = new DOMParser().parseFromString(new_content, "text/html");  
let doctype, html, head, body = '';            
if(new_content.doctype.name) doctype = "<!DOCTYPE " + new_content.doctype.name + ">";
head = new_content.head;
body = new_content.body;
 
document.body = body
document.head = head
Правильно ли так делать, если мне нужно перезаписать содержимое страницы? Или это ересь?
document.write использовать нельзя

Чисто технически браузер перезаписывает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2024, 12:04
Ответы с готовыми решениями:

Как сделать так, чтобы через FCKEditor можно было редактировать содержимое одной страницы из другой
Вообщем вопрос собственно в названии темы. Если кто может помочь, то буду очень благодарен.

Как во время побайтового чтения файла заменять его содержимое?
Здравствуйте. Есть задача написать программу шифрования любых файлов алгоритмом AES. Для экономия памяти решил отказаться от...

интересует скрипт, позволяющий заменять содержимое внутри страницу по клику на ссылку
добрый день, прошу помочь. меня интересует скрипт, который менял бы содержимое, предположим, таблицы, по клику на ссылку. то есть,...

57
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3864 / 1771 / 434
Регистрация: 14.03.2022
Сообщений: 4,460
14.03.2024, 21:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от skapunker Посмотреть сообщение
почему нельзя как нибудь заменить все и сразу?
Знаешь почему булочки продают по 3шт, а сосиски по 10шт?
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
14.03.2024, 22:16  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Я вот никак не пойму а на фига это нужно?
суть в том, чтобы проверить пользователя на бота, после чего загрузить сайт
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
14.03.2024, 22:21
Цитата Сообщение от skapunker Посмотреть сообщение
суть в том, чтобы проверить пользователя на бота, после чего загрузить сайт
Что если класть в переменную только body, а header сразу отдавать?
0
 Аватар для voraa
1305 / 1328 / 193
Регистрация: 21.01.2024
Сообщений: 6,128
14.03.2024, 22:22
Цитата Сообщение от skapunker Посмотреть сообщение
суть в том, чтобы проверить пользователя на бота, после чего загрузить сайт
И зачем менять ВСЕ?
Загружается страница с проверкой. Производишь проверку. Если все нормально, догружаешь все необходимое на эту же страницу. Не меняешь все, а догружаешь.
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
14.03.2024, 22:22  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Что если класть в переменную только body, а header сразу отдавать?
нет, у каждого сайта может быть разный head
и не только head, а вообще весь код может быть разный
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
14.03.2024, 22:27
Цитата Сообщение от skapunker Посмотреть сообщение
нет, у каждого сайта может быть разный head
и не только head, а вообще весь код может быть разный
Не понял как это противоречит. Каждый сайт свой head html и будет отдавать с body в качестве переменной.
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
14.03.2024, 22:38  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
body в качестве переменной.
body находится внутри html
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
14.03.2024, 22:42
Цитата Сообщение от skapunker Посмотреть сообщение
body находится внутри html
Т.е. вы сами не можете body положить в переменную? Откуда же вы html берете?
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
14.03.2024, 22:52  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Откуда же вы html берете?
там вся страница в виде строки
мне не только body надо заменить!

ну заменю я body, head
тогда надо думать как атрибуты из html вытаскивать и т.д
че угодно может быть на странице, надо заменить все содержимое и не думать там бади не бади, хэд не хэд
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
14.03.2024, 23:47
а таким путем не хотите пойти?

так это смотрится в песочнице
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title></title>
        <style>
            * {
                padding: 0;
                margin: 0;
                box-sizing: border-box;
            }
            html,body{
                height: 100%;
            }
            html {
                overflow: hidden;
            }
            iframe {
                border: none; 
            }
 
        </style>
    </head>
    <body>
        <script>
            // Создаем HTML-код для страницы, которую мы хотим отобразить в iframe
            var htmlContent = `<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
    * {
        padding: 0;
        margin: 0;
        box-sizing: border-box;
    }
    .box{
        width: 100px;
        height: 100px;
        background: orange;
    }
    </style>
</head>
<body>
<div class="box">home</div>
</body>
</html>`;
 
            // Преобразуем HTML-код в Blob
            var blob = new Blob([htmlContent], { type: "text/html" });
 
            // Создаем URL-адрес из Blob
            var blobUrl = URL.createObjectURL(blob);
 
            // Создаем iframe и устанавливаем его источник на URL-адрес Blob
            var iframe = document.createElement("iframe");
            iframe.src = blobUrl;
            iframe.width = "100%"; // Устанавливаем ширину iframe (можно изменить на нужное значение)
            iframe.height = "100%"; // Устанавливаем высоту iframe (можно изменить на нужное значение)
 
            // Добавляем iframe на страницу
            document.body.appendChild(iframe);
        </script>
    </body>
</html>
Добавлено через 1 минуту
дале в iframe даже существующем можно контент обновлять как угодно, даже из родительского окна или полностью переписывая

Добавлено через 1 минуту
дадада я ленивый жпт и все такое если интересно =)

Добавлено через 22 минуты
Цитата Сообщение от voraa Посмотреть сообщение
document.head - только для чтения. Присваивать ему нельзя. Ну так по спеке.
все верно

Цитата Сообщение от voraa Посмотреть сообщение
Даже странно. И ошибок не выдает?
Цитата Сообщение от skapunker Посмотреть сообщение
да вроде бы нет
будут, если добавить use strict

Добавлено через 10 минут
skapunker, и еще у меня вопрос зачем менять doctype?

Добавлено через 3 минуты
и еще что вообще делаете если не секретная разработка убийца реакта? =)
3
 Аватар для voraa
1305 / 1328 / 193
Регистрация: 21.01.2024
Сообщений: 6,128
15.03.2024, 07:02
При такой замене, скрипты в новом документе не отрабатывают.
1
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
15.03.2024, 07:04  [ТС]
Цитата Сообщение от mr_dramm Посмотреть сообщение
а таким путем не хотите пойти?
это костыль и дичь
Цитата Сообщение от mr_dramm Посмотреть сообщение
skapunker, и еще у меня вопрос зачем менять doctype?
потому что неизвестно какой doctype на сайте, нужно работать с тем что есть

Цитата Сообщение от mr_dramm Посмотреть сообщение
и еще что вообще делаете если не секретная разработка убийца
делаю проверяльщика ботов
0
 Аватар для voraa
1305 / 1328 / 193
Регистрация: 21.01.2024
Сообщений: 6,128
15.03.2024, 07:24
И в любом случае так будет неверно
JavaScript
1
2
head = new_content.head;
body = new_content.body;
Надо
JavaScript
1
2
const head = document.importNode(new_content.head, true);
const body = document.importNode(new_content.body, true);
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3998 / 2172 / 833
Регистрация: 13.03.2010
Сообщений: 7,069
15.03.2024, 08:36
Цитата Сообщение от skapunker Посмотреть сообщение
это костыль и дичь
Скорее это можно сказать про ваше решение.
1
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
15.03.2024, 08:38  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
Скорее это можно сказать про ваше решение.
то что я написал в первом посту это не мое решение, это был вопрос, правильно ли так делать
я и не говорил что это не дичь
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
15.03.2024, 08:39
Цитата Сообщение от skapunker Посмотреть сообщение
потому что неизвестно какой doctype на сайте, нужно работать с тем что есть
он сейчас один так как html 5 не меняется более 14 лет, и его нужно предоставлять правильно до того как начнете грузить контент, не после.
Цитата Сообщение от skapunker Посмотреть сообщение
делаю проверяльщика ботов
какая логика работы? чем помогут ваши манипуляции?
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
15.03.2024, 08:43  [ТС]
Цитата Сообщение от mr_dramm Посмотреть сообщение
он сейчас один так как html 5 не меняется более 14 лет
не важно какой он сейчас, важно загрузить его именно с сайта
доктайп не доктайп - об этом думать не нужно
нужно просто заменить содержимое из переменной, что там есть то и заменить

Цитата Сообщение от mr_dramm Посмотреть сообщение
какая логика работы? чем помогут ваши манипуляции?
логика такая: показать страницу с капчей -> капча пройдена - показать сайт -> а не пройдена так не пройдена
об этом тоже не надо думать, нужно просто перезаписать страницу
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
15.03.2024, 08:54
Цитата Сообщение от skapunker Посмотреть сообщение
потому что неизвестно какой doctype на сайте, нужно работать с тем что есть
доктайп не менялся 14 лет с вводе хтмл 5. Боты жмут кнопки анализируют результат(могут делать скрин а могут и разметку смотреть) и т.д. элементы кнопок не поменяльсь в html 5 добавился элемент button. На каждый сайт делает индивидуальный бот со своими продуктовыми сценариями, и им не нужен доктайп впринципе так как поиск нужного элемента от доктайп не зависит.

Цитата Сообщение от skapunker Посмотреть сообщение
это костыль и дичь
кто ж знал что у Вас там на уме...

но в любом случае я не понимаю какая была у Вас задумка...

например бот заходит на страницу что то анализирует, и потом что должен весь контент поменяться и доктайп...

вы хоть одного бота написали или кравлера?
0
 Аватар для skapunker
-30 / 25 / 12
Регистрация: 13.12.2013
Сообщений: 1,465
15.03.2024, 08:59  [ТС]
Цитата Сообщение от mr_dramm Посмотреть сообщение
На каждый сайт делает индивидуальный бот со своими продуктовыми сценариями, и им не нужен доктайп впринципе так как поиск нужного элемента от доктайп не зависит.
причем тут бот и доктайп? я говорю о том, что доктайп не нужно придумывать, он должен быть загружен с сайта. А страница сайта находится в переменной. Об этом не нужно думать.

Цитата Сообщение от mr_dramm Посмотреть сообщение
например бот заходит на страницу что то анализирует, и потом что должен весь контент поменяться а зачем да еще доктайп поменяться...
без разницы что делает бот, мне не с ботом надо бороться, а перезаписать страницу ПОЛНОСТЬЮ вот и все

все уже сделано и все работает, но сейчас страница перезаписывается методом document.write. Нужно сделать то же самое только НЕ используя document.write вот и все

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function reFresh(new_content) {
            document.open();
            if(!new_content) {
                console.log('загруженная страница пустая');
                return;
            }
            
            new_content = new DOMParser().parseFromString(new_content, "text/html");  
            let doctype = '';
            if(new_content.doctype.name) doctype = "<!DOCTYPE " + new_content.doctype.name + ">";
            document.write(doctype + new_content.documentElement.outerHTML);
            document.close();
        }
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
15.03.2024, 09:10
Цитата Сообщение от skapunker Посмотреть сообщение
логика такая: показать страницу с капчей -> капча пройдена - показать сайт -> а не пройдена так не пройдена
Цитата Сообщение от skapunker Посмотреть сообщение
причем тут бот и доктайп? я говорю о том, что доктайп не нужно придумывать, он должен быть загружен с сайта. А страница сайта находится в переменной. Об этом не нужно думать.
во первых я не понимаю по прежнему что вы делаете сайт или бота?

> А страница сайта находится в переменной.
крайне странный подход, но можно конечно испльзовать пременную body.innerHTML чтобы туда залить body а head сгенерировать сразу и неменять

Если вы делаете сайт, просто посмотрите как делается логин на сайт, логин на сайт это и еть ваша капча, после того как будет пройдена капча сервер отдает контент, но подгрузить какую то часть ресурсов сайта можно сразу чтобы потом загрузка основного контента с cервера прошла быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2024, 09:10

Чем лучше заменять пробелы в имени страницы?
Допустим есть страница с именем: &quot;матрасы для слонов&quot; Интересует, что предпочтительней использовать для замены пробелов и почему? ...

Программа должна заменять МА на КО но что то не так написал
Подскажите где ошибка? Программа должна заменять МА на КО но что то не так написал #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Как правильно сравнивать подстроки строк и заменять их (нельзя использовать str.replace)?
#include &lt;iostream&gt; #include &lt;string&gt; int main() { std::string str; getline(std::cin,str); const int n = 5; std::string...

Парсер страницы выводящий основное содержимое страницы
Здравствуйте! Нужно написать парсер, который анализирует содержимое страницы по указанному URL и выводит ту часть, где заключена основная...

Как сделать так, чтобы задний фон страницы не прокручивался вместе с передним фоном страницы ?
Как сделать так, чтобы задний фон страницы не прокручивался вместе с передним фоном страницы ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru