Скачивание страниц на сайте, вместо открытия?

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

1. Использование объекта XMLHttpRequest:
У объекта XMLHttpRequest есть метод open, который позволяет открыть соединение к серверу, и метод send, который отправляет запрос на сервер. Чтобы скачать страницу целиком, вам нужно сделать GET-запрос на URL страницы и получить весь её контент. После этого, вы сможете сохранить полученные данные в файл. Ниже приведён простой пример:

let xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/page.html', true);
xhr.responseType = 'blob';

xhr.onload = function() {
  if (xhr.status === 200) {
    let blob = new Blob([xhr.response], {type: 'text/html'});
    let url = URL.createObjectURL(blob);
    let a = document.createElement('a');
    a.href = url;
    a.download = 'page.html';
    a.click();
    URL.revokeObjectURL(url);
  }
};

xhr.send();

2. Использование элемента a с атрибутом download:
В HTML5 был добавлен новый атрибут download для элемента a. Вы можете создать элемент a, установить ему атрибут href со ссылкой на страницу для скачивания, и атрибут download с именем файла, который будет использоваться при сохранении. Далее, используя метод click у элемента a, вы можете запустить скачивание файла. Вот пример кода:

let a = document.createElement('a');
a.href = 'http://example.com/page.html';
a.download = 'page.html';
a.click();

3. Использование библиотеки или фреймворка:
Если вы разрабатываете большой проект с JavaScript, возможно, имеет смысл использовать готовую библиотеку или фреймворк, которые предоставляют дополнительные функциональные возможности по скачиванию страниц. Некоторые из таких библиотек включают axios, fetch, jQuery, Angular, и другие.

Выбор подхода для скачивания страниц на сайте, вместо их открытия, зависит от специфики вашего проекта и требований. Однако, перечисленные выше методы представляют наиболее распространённые и удобные способы достижения цели.