Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.10.2023, 16:13
Аспирант
Отправить личное сообщение для Dmitriy154 Посмотреть профиль Найти все сообщения от Dmitriy154
 
Регистрация: 11.02.2016
Сообщений: 48

Копирование элемента
Вопрос, при сохранении (при помощи outerHTML) определенного html узла в буфер обмена и его последующей вставкой в редактор, теряется разметка (отсупы, переносы строк), фрагмент кода вставляется сплошной строкой. А я бы хотел сохранить код с разметкой, например, как это делает инспектор chrome. Подскажите, как реализовать? Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 22.10.2023, 17:21
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,748

Теряться разметка не должна.
Что было, какие переносы, какие пробелы и табуляции - все должно остаться.
А если надо форматировать неформатированный код, то придется самому писать программу.
Типа prettier в VS Code.
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2023, 17:44
Аспирант
Отправить личное сообщение для Dmitriy154 Посмотреть профиль Найти все сообщения от Dmitriy154
 
Регистрация: 11.02.2016
Сообщений: 48

Как я понимаю, outerHTML сохраняет все с разметкой. Но я данные outerHTML передаю в функцию save(expotr_html.outerHTML, 'export.html'):
function save(text, name) {
    const a = document.body.appendChild(Object.assign(document.createElement('a'), {
      href: URL.createObjectURL(new Blob([text])),
      download: name || 'file.html',
      style: 'position:absolute;top:-9999px;right:-9999px;clip:rect(0,0,0,0)'
    }));
    a.click();
    URL.revokeObjectURL(a.href);
    a.remove();
}

Получается где-то в функции разметка исчезает, где-то в blob?
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2023, 17:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,748

Сообщение от Dmitriy154
Получается где-то в функции разметка исчезает, где-то в blob?
Не может быть такого

<div>
	
	<h3>Теряться разметка не должна!</h3> 
	<p>
		Что было, какие переносы, какие пробелы и табуляции - все должно остаться.
	<p>
		А если надо форматировать неформатированный код, то придется самому писать программу.
		Типа <span>prettier</span> в <span>VS Code</span>.
	</p>
</div>
<script>
	function save(text, name) {
		const a = document.body.appendChild(Object.assign(document.createElement('a'), {
		  href: URL.createObjectURL(new Blob([text])),
		  download: name || 'file.html',
		  style: 'position:absolute;top:-9999px;right:-9999px;clip:rect(0,0,0,0)'
		}));
		a.click();
		URL.revokeObjectURL(a.href);
		a.remove();
	}

	const div = document.querySelector('div');
	save(div.outerHTML);
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 22.10.2023, 21:04
Аспирант
Отправить личное сообщение для Dmitriy154 Посмотреть профиль Найти все сообщения от Dmitriy154
 
Регистрация: 11.02.2016
Сообщений: 48

Насчет программы не совсем понял (, т.е. программа сама расставляет необходимые переносы строк в конце тегов?. Не могли бы вы пояснить. я нашел ошибку, у меня сам по себе код html формируется без знаков переноса строк и табуляции и, соответственно, он мне так и отдается... Теперь думаю, может и вправду сделать скрипт, который принимает сплошную строку и добавляет знаки \n и \t, только как это реализовать? ставить знак переноса строки после закрывающегося тега, а как же с табуляцией.... (мысли вслух)
Ответить с цитированием
  #6 (permalink)  
Старый 22.10.2023, 21:18
Аспирант
Отправить личное сообщение для Dmitriy154 Посмотреть профиль Найти все сообщения от Dmitriy154
 
Регистрация: 11.02.2016
Сообщений: 48

Нашел быстрый способ, в Notepad нажимаем 4 клавиши одновременно: cntrl + alt + shift + B. И фсё!

Последний раз редактировалось Dmitriy154, 23.10.2023 в 11:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не корретная работа выбора элемента в динамическом <select> CTABP Элементы интерфейса 3 19.09.2017 15:24
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
как узнать размер в пикселях элемента созданного элемента span Faab Общие вопросы Javascript 2 09.11.2013 16:46
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
Браузер не успевает определить высоту вновь созданного через XMLHttpRequest элемента Lockpickup AJAX и COMET 17 25.04.2011 17:58