Как скопировать содержимое HTML в новую вкладку

Я создаю веб-приложение, и мне нужно скопировать HTML-элемент div и все, что внутри него, на новую вкладку. Я пишу этот код на JavaScript. До сих пор я работал над созданием большого двоичного объекта, а затем создавал файл для загрузки. Этот подход копирует весь HTML-код, который мне нужен, НО он не копирует текст, который был введен в какие-либо текстовые поля. Насколько я понимаю, проблема в том, что введенный текст не является частью HTML-кода, поэтому его нельзя скопировать. Однако я не могу найти другого подхода к этому, пожалуйста, помогите. Спасибо

Добро пожаловать в Stack Overflow. Пожалуйста, пройдите тур , чтобы узнать, как работает Stack Overflow, и прочитайте How to Ask о том, как улучшить качество вашего вопроса. Затем посетите справочный центр, чтобы узнать, какие вопросы актуальны на этом сайте.

Mister Jojo 09.10.2022 03:40

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

vanowm 09.10.2022 03:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать Element.setAttribute() для этих элементов до сериализации вашего дерева DOM. Например:

input.setAttribute("value", input.value)

Это скопирует изменяемое значение (не сериализуемое) в атрибут (который является сериализуемым).


Вот фрагмент демонстрации:

const input = document.querySelector('input');

console.info('initial:', input.outerHTML);

input.value = 'hello world';
console.info('before:', input.outerHTML);

input.setAttribute('value', input.value);
console.info('after:', input.outerHTML);
<input type = "text">
Ответ принят как подходящий

(Вдохновлено комментарием @vanowm)

Сначала скопируйте html (скажем, внутри DIV)

Затем вам нужно будет просмотреть все поля ввода и прочитать их значение, чтобы вы могли их применить.

Таким образом, код выглядит следующим образом (измените его в соответствии с вашими потребностями):

<div id=container><html>
<input type=text name=text1 id = "text1">
<br><input type=text name=text2 id = "text2">
</html></div>

<textarea id=target style = "width:100%;height:200px;"></textarea>

<input type=button name=go onclick = "trigger();" value = "Parse">

<script>
function trigger(){
target0=document.getElementById('container').innerHTML;

text1= document.getElementById("text1").value;
text2= document.getElementById("text2").value;

target0=target0.replace('id = "text1"', 'id = "text1" value = "' + text1 + '"');
target0=target0.replace('id = "text2"', 'id = "text2" value = "' + text2 + '"');

document.getElementById("target").innerHTML=target0;

}
</script>

Другие вопросы по теме