Копирование элемента
Вопрос, при сохранении (при помощи outerHTML) определенного html узла в буфер обмена и его последующей вставкой в редактор, теряется разметка (отсупы, переносы строк), фрагмент кода вставляется сплошной строкой. А я бы хотел сохранить код с разметкой, например, как это делает инспектор chrome. Подскажите, как реализовать? Спасибо!
|
Теряться разметка не должна.
Что было, какие переносы, какие пробелы и табуляции - все должно остаться. А если надо форматировать неформатированный код, то придется самому писать программу. Типа prettier в VS Code. |
Как я понимаю, 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? |
Цитата:
<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> |
Насчет программы не совсем понял (, т.е. программа сама расставляет необходимые переносы строк в конце тегов?. Не могли бы вы пояснить. я нашел ошибку, у меня сам по себе код html формируется без знаков переноса строк и табуляции и, соответственно, он мне так и отдается... Теперь думаю, может и вправду сделать скрипт, который принимает сплошную строку и добавляет знаки \n и \t, только как это реализовать? ставить знак переноса строки после закрывающегося тега, а как же с табуляцией.... (мысли вслух)
|
Нашел быстрый способ, в Notepad нажимаем 4 клавиши одновременно: cntrl + alt + shift + B. И фсё!
|
Часовой пояс GMT +3, время: 02:25. |