jQuery проверить тип документа - PullRequest
3 голосов
/ 15 июня 2010
If doctype is <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    // do something
else 
    // do something

Как?

Спасибо.

Ответы [ 5 ]

3 голосов
/ 15 июня 2010

Верно, я вернулся после тестирования этого в 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/

2 голосов
/ 15 июня 2010

Вы можете использовать объект jQuery.support для проверки определенных функций браузера (например, BoxModel) и работы с ними.

1 голос
/ 28 марта 2013

document.doctype и document.firstChild оба, похоже, возвращают тип документа, хотя я не знаю, насколько широко они поддерживаются.

1 голос
/ 27 февраля 2012

Попробуйте использовать атрибут "this.document.doctype". Если значение не объявлено, результат будет нулевым, в противном случае результатом будет объект с типом документа.

0 голосов
/ 15 июня 2010

Вы можете попробовать:

var doc = $ ("DOCTYPE");

...