webentwicklung-frage-antwort-db.com.de

Entfernen Sie den gesamten Inhalt mit Pure JS

Ich suche nach einer Möglichkeit, den gesamten Inhalt einer Webseite mit reinem Javascript zu entfernen - ohne Bibliotheken.

Ich habe es versucht:

document.documentElement.innerHTML = "whatever";

aber das funktioniert nicht: es ersetzt das Innere des <html/>-Elements. Ich möchte das gesamte Dokument ersetzen, einschließlich der Deklaration von doctype und <?xml, falls möglich.

14

Ich denke, ein Browser geht zu Recht davon aus, dass eine Seite mit dem Inhaltstyp text/html immer eine Webseite ist.

document.body.innerHTML = '';

Es wird immer noch etwas HTML herumhängen.

Du könntest es versuchen...

document.documentElement.innerHTML = '';

... was mich mit <html></html> zurückließ.

Yi Jiang hat etwas Kluges vorgeschlagen.

window.location = 'about:blank';

Dadurch gelangen Sie auf eine leere Seite - ein interner Mechanismus, der von den meisten Browsern meiner Meinung nach bereitgestellt wird.

Ich denke jedoch, dass die beste Lösung darin besteht, document.open() zu verwenden, wodurch der Bildschirm gelöscht wird.

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

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

Entfernt alles (auch doctype) unter FF 3.6, Chrome 3.195 und Safari 4.0. IE8 bricht ab, da das Kind sein Elternteil entfernen möchte.


Ein späteres erneutes Aufrufen könnte auch folgendermaßen erfolgen:

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

Laut Dotoros Artikel über die document.clear-Methode empfehlen sie (da sie veraltet ist), stattdessen document.open aufzurufen, wodurch die Seite gelöscht wird, da ein neuer Stream gestartet wird.

Auf diese Weise vermeiden Sie den bösen about:blank Hack.

Nachdem die Seite bereits vollständig geladen wurde:

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

Ich glaube, das wird es schaffen

document.clear()  //deprecated

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

Die Document.open () -Methode öffnet ein Dokument zum Schreiben. Wenn Sie die offene Methode nicht verwenden, können Sie Document nicht ändern, nachdem Sie innerhtml auf leere Zeichenfolge gesetzt haben

0
Kursat Turkay

Ich glaube, das lässt den doctype-Knoten immer noch hängen, aber:

document.documentElement.remove()

oder das Äquivalent

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

0
Fiddles