JavaScript で DOCTYPE 宣言(document.doctype)を取得する
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 ベースで調べただけなので正規のやり方じゃないかも…。
何か良い方法があればコメントで教えてくださーい。