ここに簡単なフィドルがあります:
alert(document.doctype.valueOf())
予想通り、生成[object DocumentType]
されます。
ただし、F12 をdocument.doctype.valueOf()
押して JavaScript コンソール (Chrome、IE11) に入力すると、次のように表示されます。
<!DOCTYPE html>
不一致の理由と、コンソール モードで実際に表示されるプロパティ (存在する場合) は何ですか?
[更新]document.doctype.outerHTML
@BlueSkies's answerへのコメントで IE11 までは機能していたと述べたとき、私はまったく正しくありませんでした。私の場合、IEWebBrowser
コントロールの WinForms バージョンをC# アプリでホストしています。IE11でも、次のように機能することを発見しました:
dynamic domDocument = webBrowser.Document.DomDocument;
// this shows '<!DOCTYPE html PUBLIC "" "">'
string doctype = domDocument.doctype.outerHTML;
MessageBox.Show(doctype);
// this shows 'undefined'
domDocument.parentWindow.execScript("alert(document.doctype.outerHTML)");
どうやら、それは外部からは機能しますが、ページの内部からは機能しません。興味深いが、信頼できない。document.doctype.outerHTML
この IE ベースのアプリでも使うべきではないと思います。