Удалите все содержимое с помощью чистого JS

Я ищу способ удалить весь контент веб-страницы, используя чистые библиотеки Javascript – no.

Я пытался:

document.documentElement.innerHTML = "whatever"; 

но это не работает: он заменяет внутреннюю часть элемента . Я рассматриваю замену всего документа, включая, если возможно, doctype и <?xml doctype объявление.

Solutions Collecting From Web of "Удалите все содержимое с помощью чистого JS"

Я думаю, что браузер по праву предполагает, что страница с text/html content-type text/html всегда будет веб-страницей, поэтому пока вы можете сделать что-то вроде …

 document.body.innerHTML = ''; 

У него по-прежнему будет HTML-код.

Вы можете попробовать …

 document.documentElement.innerHTML = ''; 

… который оставил меня с .

Йи Цзян предлагал что-то умное.

 window.location = 'about:blank'; 

Это приведет вас к пустой странице – внутреннему механизму, предоставляемому большинством браузеров, которые я считаю.

Я думаю, однако лучшим решением является использование document.open() который очистит экран.

 var i = document.childNodes.length - 1; while (i >= 0) { console.log(document.childNodes[i]); document.removeChild(document.childNodes[i--]); } 

Удаляет все (doctype) также на FF 3.6, Chrome 3.195 и Safari 4.0. IE8 прерывается, так как ребенок хочет удалить родителя.


Повторное представление позже можно было бы сделать так:

 while (document.firstChild) { document.removeChild(document.firstChild); } 

Согласно статье Доторо о методе document.clear , они (поскольку они устарели) рекомендуют вызывать document.open вместо этого, который очищает страницу, так как она запускает новый stream.

Таким образом, вы избегаете неприятностей about:blank взлом.

После того, как страница уже полностью загружена:

 document.write(''); document.close(); 

Я считаю, что это сделают это

 document.clear() //deprecated window.location = "about:blank" //this clears out everything 

Мне просто интересно, почему вы хотите это сделать. Теперь нет того, что я знаю, чтобы заменить абсолютно все до декларации doctype, но если вы хотите пойти на эти длины, то почему бы не перенаправить пользователя на специально созданную страницу с шаблоном, который вам нужен, с требуемым типом doctype, а затем заполнить там контент?

EDIT: в ответ на комментарий, что вы можете сделать, это удалить весь контент, а затем создать iframe, чтобы он заполнил всю страницу, а затем вы полностью контролируете контент. Имейте в виду, что это большой взлом и, вероятно, будет очень болезненным – но это сработает 🙂

Я считаю, что это все равно оставит узел doctype висящим, но:

document.documentElement.remove()

или эквивалент

document.getElementsByTagName("html")[0].remove()

 document.documentElement.innerHTML=''; document.open(); 

Метод Document.open () открывает документ для записи. если вы не используете открытый метод, вы не можете изменить документ после установки innerhtml на пустую строку

УДАЛИТЕ ВСЕ, НО —! DOCTYPE html —

 var l = document.childNodes.length; while (l > 1) { var i = document.childNodes[1]; document.removeChild(i); l--; } 

ИСПЫТАНИЕ НА ИНТЕРНЕТЕ FIREFOX WEB – childNodes [1] IS —! DOCTYPE html —