Полное сохранение страницы со всеми прикреплениями стилями и скриптами

120
18 декабря 2020, 19:30

Когда пользователь сохраняет страницу через Ctrl+S. Она сохраняется в таком виде : Как воспроизвести данное действие? стэк технологий: JavaScript, Java, Selenium

Answer 1

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

function dl() { 
  download(document.body.parentNode.outerHTML, document.location.href + '.html'); 
  [...document.scripts].filter(s => s.src).forEach(s =>  
    fetch('https://cors-anywhere.herokuapp.com/' + s.src) 
      .then(r => r.text()) 
      .then(data => download(data, s.src.split('/').pop()))) 
} 
 
function download(data,name){ 
  let a = document.createElement("a"); 
  let blob = new Blob([data], {type: 'text/html'}); 
  a.href = URL.createObjectURL(blob); 
  a.download = name; 
  a.click(); 
}
hello<br> 
<button onclick="dl()">download</button>

В дополнение к этому нужно скачать все остальные ресурсы, это стили картинки и возможно еще что-то что напрямую не включено в html.

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

P.S. Папку создать не получится, однако есть возможность все упаковать в один архив.

READ ALSO
Как определить по какому элементу был клик?

Как определить по какому элементу был клик?

Есть много элементов списка с одним и тем же id='report-started'При нажатии на который я в js должен получить его data-progress

127
Динамическое создание классов

Динамическое создание классов

Например, есть несколько классов classA, classB и мне необходимо создать класс динамически, как в php

105
Добавление css классов по условию в Vue.js

Добавление css классов по условию в Vue.js

При переносе кода из проекта на aspnet core в бекенд на vue я столкнулся с тем, что хочу записать некоторые фрагменты шаблона более лаконично

127
Почему в js не работает height:auto?

Почему в js не работает height:auto?

Как сделать чтобы высота картинки в блоке была auto? Те ширина картинки всегда 100%, а высота блока подстраивалась по пропорциональной высоте...

113