Да, это возможно , но делать это очень плохо.
UPD. Извините, нет, это не работает.
Но в некоторых случаях мы просто не можем контролировать то, что подается пользователю. Типичная ситуация: платежный шлюз, который ваша компания обязана использовать по какой-либо юридической причине. Они позволяют вам стилизовать страницу и помещать в нее свое собственное содержимое, но не позволяют изменить или то, как устанавливается тип документа (и он вообще не устанавливается!).
Итак, вдохновленный этой ссылкой: http://www.webmasterworld.com/forum91/4856.htm и красивое решение, вероятно, будет примерно таким (поместите его перед закрывающим тегом тела </body>
):
<!--[if IE]>
<script>
!function() {
var doctype = "<!DOCTYPE html>",
headHTML = document.head.outerHTML,
bodyHTML = document.body.outerHTML;
window.doctypeSet = false;
if (window.doctypeSet) return;
setTimeout(function(){
document.write(
doctype +
"<html>" +
headHTML +
bodyHTML +
"</html>"
);
window.doctypeSet = true;
}, 0);
}();
</script>
<![endif]-->
Однако вы также можете изменить <!--[if IE]>
на что-то вроде <!--[if lte IE 9]>
, чтобы IE10 и более поздние версии не исполняли этот грязный танец. Я не уверен, что IE10 также переключится в режим quirksmode, если doctype отсутствует, если он не переключается, тогда нет необходимости вызывать этот код там.