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
.
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.
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);
}
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();
Je crois que ça va le faire
document.clear() //deprecated
window.location = "about:blank" //this clears out everything
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
Je crois que cela laissera toujours le noeud doctype traîner, mais:
document.documentElement.remove()
ou l'équivalent
document.getElementsByTagName("html")[0].remove()