ライブラリではなく、純粋なJavascriptを使用してWebページのコンテンツ全体を削除する方法を探しています。
私は試した:
document.documentElement.innerHTML = "whatever";
しかし、それは機能しません:<html/>
要素の内部を置き換えます。私は、可能であればdoctype
および<?xml
宣言を含め、ドキュメント全体を置き換えることを検討しています。
私はブラウザがコンテンツタイプ_text/html
_のページが常にWebページであると正しく想定していると思います。
_document.body.innerHTML = '';
_
それでもHTMLがぶら下がっています。
あなたは試すことができます...
_document.documentElement.innerHTML = '';
_
...これにより_<html></html>
_が残りました。
Yi Jiang は何か賢いことを提案しました。
_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--]);
}
FF 3.6、Chrome 3.195、およびSafari 4.0)のすべて(doctypeも)を削除します。子が親を削除しようとしているため、IE8が機能しなくなります。
しばらくしてから、次のようにすることもできます。
while (document.firstChild) {
document.removeChild(document.firstChild);
}
document.clearメソッドに関するDotoroの記事 によると、新しいストリームを開始するため、代わりにdocument.open
を呼び出すことをお勧めします。これにより、ページがクリアされます。
これにより、厄介なabout:blank
ハックを回避できます。
ページが既に完全に読み込まれた後:
document.write('');
document.close();
これでうまくいくと思います
document.clear() //deprecated
window.location = "about:blank" //this clears out everything
document.documentElement.innerHTML='';
document.open();
Document.open()メソッドは、書き込み用にドキュメントを開きます。 openメソッドを使用しない場合、innerhtmlを空の文字列に設定した後でDocumentを変更できません
私はこれでもDoctypeノードがぶら下がったままになると信じていますが、
document.documentElement.remove()
または同等のもの
document.getElementsByTagName("html")[0].remove()