16 августа 2009, 8:41
Javascript: получение/редактирование Doctype
Просто тривиальная задача, которая возникла в голове из-за комментариев к одному из топиков.
У нормальных браузеров есть гет-метод(функция) document.doctype из которой мы можем узнать о нашем Доктайпе, с помощью параметров name, publicId, systemIdзадницу двойной парентНод от тела документа, то естьи т. д. браузерах, мы просто меняем нодВалью, а в других, нормальных, барузерах мы имеем только гет-функцию, и при попытке передать значение, получим еррор, что функция онли геттер, и у неё нету возможности сеттер.
Но, как говорится, на каждого лалала, есть своябалда управа. Мы просто заменим доктайп новым чилдом, вместо его редактирования %)
ПыСы: в опере, это я делал для неё, изменение доктайпа влеяет на рендеринг страниц, в других ничего не происходит. И ещё, изначально опера ведёт себя как нормбраузер, а потом, как ИЕ о_О гавнецо кароче говоря )))
У нормальных браузеров есть гет-метод(функция) document.doctype из которой мы можем узнать о нашем Доктайпе, с помощью параметров name, publicId, systemId
<!-- вот такая строчка --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- соответствует такой --> <!DOCTYPE name PUBLIC "publicId" "systemId">У иных, темных браузерах, доступ к Доктайпу, организован через
document.body.parentNode.parentNode.firstChild.nodeValueИтого, что бы узнать о Доктайпе получаем простую функцию
function getdoctype() { if (document.doctype) { alert("document.doctype:" +"\nname: " + document.doctype.name +"\npublicId: " + document.doctype.publicId +"\nsystemId: " + document.doctype.systemId); } else if (document.body.parentNode) { var dbp = document.body.parentNode; alert("document.body.parentNode:" +"\n.parentNode.firstChild.nodeValue: " + dbp.parentNode.firstChild.nodeValue); } }Теперь мы знаем, как его получить, сразу становится интерестно, можно ли его изменить ;). В ИЕ
Но, как говорится, на каждого лалала, есть своя
var newDoctype = document.implementation.createDocumentType(name,publicId,systemId); document.doctype.parentNode.replaceChild(newDoctype, document.doctype);
ПыСы: в опере, это я делал для неё, изменение доктайпа влеяет на рендеринг страниц, в других ничего не происходит. И ещё, изначально опера ведёт себя как нормбраузер, а потом, как ИЕ о_О гавнецо кароче говоря )))

1 комментарий РСС
Ваш комментарий