web-dev-qa-db-fra.com

Supprimer tout le contenu à l'aide de JS pur

Je cherche un moyen de supprimer tout le contenu d'une page Web en utilisant du Javascript pur - pas de bibliothèques.

J'ai essayé:

document.documentElement.innerHTML = "whatever";

mais cela ne fonctionne pas: il remplace l'intérieur de l'élément <html/>. Je cherche à remplacer le document entier, y compris si possible les déclarations doctype et <?xml.

14
Félix Saparelli

Je pense qu'un navigateur suppose à juste titre qu'une page avec le type de contenu text/html sera toujours une page Web - alors même si vous pouvez faire quelque chose comme ...

document.body.innerHTML = '';

Il y aura toujours du HTML.

Tu pourrais essayer...

document.documentElement.innerHTML = '';

... ce qui m'a laissé avec <html></html>.

Yi Jiang a suggéré quelque chose d'intelligent.

window.location = 'about:blank';

Cela vous mènera à une page blanche - un mécanisme interne fourni par la plupart des navigateurs, je crois.

Je pense cependant que la meilleure solution consiste à utiliser document.open() qui effacera l'écran.

24
alex
var i = document.childNodes.length - 1;

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

Supprime tout (doctype également) sur FF 3.6, Chrome 3.195 et Safari 4.0. IE8 se brise car l'enfant veut supprimer son parent.


Revisiter un moment plus tard, pourrait également être fait comme ceci:

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

Selon l'article de Dotoro sur la méthode document.clear , ils recommandent (depuis son obsolète) d'appeler plutôt document.open, ce qui efface la page, puisqu'elle lance un nouveau flux.

De cette façon, vous éviterez le méchant piratage about:blank.

Une fois la page complètement chargée:

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

Je crois que ça va le faire

document.clear()  //deprecated

window.location = "about:blank"  //this clears out everything
0
John Hartsock
document.documentElement.innerHTML='';
document.open();

La méthode Document.open () ouvre un document en écriture. Si vous n'utilisez pas la méthode open, vous ne pouvez pas modifier Document après avoir défini innerhtml sur une chaîne vide

0
Kursat Turkay

Je crois que cela laissera toujours le noeud doctype traîner, mais:

document.documentElement.remove()

ou l'équivalent

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

0
Fiddles