Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   значение doctype в IE (https://javascript.ru/forum/events/16414-znachenie-doctype-v-ie.html)

decadent 07.04.2011 12:46

значение doctype в IE
 
Можно ли как-то получить значение DOCTYPE в IE? Или хотя бы его присутствие в документе?

poorking 07.04.2011 15:37

alert(document.doctype.name)

Тут null почему то, наверно тут js выполняется в iframe, а там нет его

decadent 07.04.2011 16:40

Нуль, потому что name лишнее. document.doctype, везде кроме IE работает. Мне нужна проверка на наличие DOCTYPE в IE.

poorking 07.04.2011 17:03

document.doctype возвращает объект доктайп, а document.doctype.name его название. Я проверил в IE9 только, все работает, если document.doctype == null, Значит он не указан

decadent 07.04.2011 18:00

IE ниже 9 вообще возвращает null или undefined. И мне главное определять его наличие. Его имя уже не так важно.

Kolyaj 07.04.2011 18:32

Как-то так
var isDoctype = function(el) {
    return /^(<!DOCTYPE|<\?xml)/i.test(el.text);
};
var comments = targetDocument.getElementsByTagName('!');
for (var i = 0; isDoctype(comments[i]); i++) {
    doctype += comments[i].text;
}


Тут ещё выдёргиваются всякие xml-ные заголовки.

рони 07.04.2011 19:52

Kolyaj,
Наверно не text а data или nodeValue
Вариант для IE ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
</head>
<body>
<script type="text/javascript">
var Doctype =/CSS/.test(document.compatMode)&&document.getElementsByTagName('!')[0].data;
document.write(Doctype)
</script>
</body>
</html>

Kolyaj 08.04.2011 09:29

Цитата:

Сообщение от рони
Наверно не text а data или nodeValue

Я скопировал из одного из проектов. Видимо text тоже работает, раз там написан. Ну разве что в каком-то из IE перестал работать.

decadent 08.04.2011 13:28

Спасибо. Все гениальное просто)


Часовой пояс GMT +3, время: 13:01.