Кто-нибудь знает, как я могу динамически изменять doctype с помощью javascript?
Я попытался с этой функцией,
document.doctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'); ,
но это не сработает.
Кто-нибудь знает, как я могу динамически изменять doctype с помощью javascript?
Я попытался с этой функцией,
document.doctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'); ,
но это не сработает.
Я надеюсь, что это может помочь некоторым из вас (протестировано в консоли, и оно меняет фактический DOCTYPE)
var newDoctype = document.implementation.createDocumentType(
'html',
'-//W3C//DTD XHTML 1.0 Transitional//EN',
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdd'
);
document.doctype.parentNode.replaceChild(newDoctype,document.doctype);
document.doctype is a read-only
свойство, а не метод, по-видимому, согласно MDC.
Что вам нужно:
https://developer.mozilla.org/En/DOM/DOMImplementation.createDocumentType
Возвращает объект DocumentType, который может быть использован с DOMImplementation.createDocument при создании документа или может быть помещен в документ через Node.insertBefore() или Node.replaceChild():
Чтобы попытаться оправдать этот прецедент, у меня есть следующий сценарий:
У меня есть шаблон TAL, который отображает небольшой перенос страницы. Затем я переношу этот перенос в родительские теги следующим образом:
<html tal:omit-tag="True" ...>
<body tal:omit-tag="True">
<div class="wrapper" tal:omit-tag="True">
..
<div id="mydiv" tal:content="foo()">Example content.</div>
..
</div>
</body>
</html>
Таким образом, этот шаблон TAL доступен для просмотра/редактирования в виде отдельного HTML файла дизайнером. Нельзя опустить DTD в TAL, но его нельзя добавить туда.
Легкий способ добавить его с помощью JavaScript выглядит следующим образом:
if (!document.doctype) {
document.write('<!doctype HTML>\n' + \
document.head.outerHTML + \
document.body.outerHTML);
}
Я не думаю, что ты можешь. doctype
указан как свойство в документации W3C, но он доступен только для чтения. Даже если бы это было не так, я не могу представить, какое влияние это изменило бы в реальных браузерах.
Повторите свои последующие комментарии: вам придется обрабатывать эту серверную сторону и возвращать страницу, предназначенную для целевого браузера. Но вы не должны делать этого в каких-то, но очень серьезных случаях.
Даже если бы вы могли, ваш код будет выполняться после того, как страница уже решила отобразить, в каком случае эффект изменения doctype ничего. Единственный способ представить современные браузеры, имеющие проблемы с doctype, заключается в том, что вы полагаетесь на режим quirks в IE - исправьте свой проект для работы во всех браузерах, но IE, а затем посмотрите на стиль IE.
Если проблема связана только с IE, так как у меня также возникла одна и та же проблема, я использовал режим Quirks для IE. Просто используйте комментарий перед объявлением DOC TYPE, и IE перейдет в режим quirks.
Другой способ, с которым вы можете работать, - сначала загрузить script, чтобы обнаружить браузер, а затем перенаправить с параметром браузеров на другую страницу, где вы можете объявить зависимый от браузера тип doctype.
Пример того, что я сделал с моим кодом, выглядит так: -
<!--[if lt IE 9]>
<![endif]-->
<![if gte IE 9]>
<!DOCTYPE html>
<![endif]>
Здесь я удалил отказ от doctype от browe