Верно, я вернулся после тестирования этого в IE, Chrome, Firefox и Opera.IE предоставит вам полный тип документа со следующим фрагментом кода:
var doctype = document.documentElement.previousSibling.nodeValue;
// -> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
К сожалению, это, вероятно, неверно, поскольку Chrome, Firefox и Opera возвращают null
для nodeValue
.Поскольку ни один из них не поддерживает outerHTML
, я не могу придумать способ получить полный тип документа, но вы можете получить отдельные части:
var doctype = document.documentElement.previousSibling;
console.log(doctype.systemId)
// -> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
console.log(doctype.publicId)
// -> -//W3C//DTD XHTML 1.0 Strict//EN
Однако в IE это не работает, нобыло бы не сложно разобрать их.Вы можете использовать оператор if
, чтобы проверить, что nodeValue
не null
, и вернуться к проверке systemId
или publicId
.
Скрипт, используемый для запуска тестов: http://jsfiddle.net/Cwb8q/