Настройка типа документа HTML / Режим IE Quirks - PullRequest
5 голосов
/ 05 мая 2010

Я работаю в рамках параметров недоступного разработчика, который создал систему генерации html для наших продуктов. Всякий раз, когда создается новая страница, он размещает:

<!-- updated page at 05/MAY/2010 02:58.58 -->
<!-- You must use the template manager to modify the formatting of this page. --> 

в результате мой код выглядит так:

<!-- updated page at 05/MAY/2010 02:55.30 -->
<!-- You must use the template manager to modify the formatting of this page. -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

Я не верю, что IE вообще читает этот тип документа, так как, глядя на экран разработчика, он рендерится в режиме Quirks ... есть ли другой способ вывести IE из этого ужасного режима Quirks? Я пытался связаться с разработчиком, но он был довольно недоступен ..

Заранее благодарю за любую помощь, которую вы можете предложить.

// EDIT:

Можно ли это сделать с помощью javascript, чтобы попасть на родительскую страницу командой on load?

Ответы [ 5 ]

2 голосов
/ 28 сентября 2010

Вы можете заставить IE использовать стандартный режим, добавив

<meta http-equiv="X-UA-Compatible" content="IE=8" />

в начале вашего раздела заголовка для HTML, или вы можете добавить эквивалентный заголовок HTTP через конфигурацию сервера. Однако это будет работать только на IE8 или выше.

2 голосов
/ 05 мая 2010

Вы ничего не можете сделать. Ваша система управления контентом не работает. Вам нужно либо найти разработчика и попросить его исправить эту неисправную систему, либо получить новую систему управления контентом.

0 голосов
/ 26 января 2012

Да, это возможно , но делать это очень плохо.

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 отсутствует, если он не переключается, тогда нет необходимости вызывать этот код там.

0 голосов
/ 05 мая 2010

Если вы застряли с этим кодом, то почему бы не добавить последний шаг в процесс сборки, который отбрасывает эти комментарии?

0 голосов
/ 05 мая 2010

Как генерируются страницы?

Если вы используете PHP, вы можете использовать буферизацию вывода для предотвращения вывода комментариев шаблона.

...