JavaScript で DOCTYPE 宣言(document.doctype)を取得する

JavaScript HTML

JavaScript で DOCTYPE 宣言を取得する方法として document.doctype があるが、これがブラウザーによって挙動が違う。

document.doctype プロパティ

name <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
publicId <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
systemId <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Chrome の場合、以下の記述だけで全体を取得できる

document.doctype;
// → <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Firefox, Safari, Opera の場合、個々のプロパティを指定しないと取得できない

document.doctype;
// → { entities, internalSubset, name, notations, publicId, systemId }

with (document.doctype) {
    var dtd = '<!DOCTYPE '+ name +' PUBLIC "'+ publicId +'" "'+ systemId +'">';
}
// → 実際にはこれでは駄目で、条件分岐させないと様々なDOCTYPEには対応できません。

console ベースで調べただけなので正規のやり方じゃないかも…。

何か良い方法があればコメントで教えてくださーい。

JavaScript HTML