Есть ли способ заставить страницу в IE8 визуализировать в режиме совместимости IE7 или в режиме совместимости IE8 Compat View? - PullRequest
0 голосов
/ 09 июня 2010

ПРИМЕЧАНИЕ. Когда я говорю «Режим браузера» и «Режим документа», я имею в виду параметры рендеринга в строке меню инструментов разработчика IE8.

Мы замечаем странную функциональность на нашем веб-сайте в Internet Explorer 8. Когда пользователь нажимает кнопку «Добавить в корзину», вызывается метод jQuery .load(), чтобы запросить новую веб-страницу, которая затем помещается в JavaScript ». всплывающее окно. Все отлично работает в IE7 (и в этом случае Firefox, Chrome и Safari).

Однако в IE8 все элементы <table> (и их дочерние элементы) скрыты в контенте, загружаемом через .load(). Это происходит только в режиме причуд IE8 (по умолчанию для страницы), а не в режиме причуд IE7.

Я знаю, что могу использовать теги <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> или <meta http-equiv="X-UA-Compatible" content="IE=7" />, чтобы сообщить IE8, как он должен отображать документ , но это вынуждает страницу отображаться как документ стандарта IE7 в IE8 «Режим браузера».

Что мне нужно, как ни странно, это заставить страницу отображаться в режиме Quirks либо в режиме обозревателя IE7, либо в режиме обозревателя совместимости IE8. Возможно ли это?

Это также вызывает вопросы: режим причуд IE8 должен быть таким же, как режим причуд IE7?

Ответы [ 3 ]

1 голос
/ 09 июня 2010

Когда браузер находится в режиме Quirks, вы не можете ожидать от него ничего хорошего.Сделайте ваш код совместимым со стандартом html, чтобы браузер перешел в режим стандартов, и тогда вы сможете приступить к рассмотрению проблемы с JavaScript.

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

Я столкнулся с этой же проблемой, и обнаружил, что между режимами браузера IE7 и IE8 есть разница в поведении, которая не вызвана проверкой версии.Когда содержимое, которое вы пытаетесь загрузить в innerHTML, включает DOCTYPE, в режиме браузера IE8 содержимое в таблицах не будет отображаться, но будет отображаться в режиме IE7 и в режиме IE7 (все это применимо только к режиму причуд для документаРежим).Следующий пример HTML демонстрирует проблему (текст «Внутренняя таблица» не отображается в режиме браузера IE8):

<html>
    <head>
        <title>DOCTYPE Browser mode test</title>
    </head>
    <body>
        <div id="content">Original Content</div>

        <button type="button" onclick="document.getElementById('content').innerHTML = '<!DOCTYPE>Outside table <table>Inside Table</table>';">Change Content!</button>
    </body>
</html>

К сожалению, я не нашел способа получить режим причуд в режиме браузера IE7.Вы можете обойти эту проблему, выполнив что-то вроде «document.getElementById ('content'). InnerHTML = document.getElementById ('content'). InnerHTML", потому что DOCTYPE и другие посторонние элементы были проанализированы, поэтому их сброс вызываеттаблицы для отображения снова.

0 голосов
/ 09 июня 2010

Режим Quirks используется для обозначения рендеринга, который вы получаете, когда вы не указываете тип документа (или вы указываете действительно старый тип документа, см. Таблицу в статье Википедии по теме ).Этот рендеринг основан на IE5 (или 5.5, я забыл, какой).Это не меняется между IE7 и IE8.

Если вы испытываете другое поведение в IE8, когда он рендерит документ в IE7 или в режиме причуд, то это говорит о том, что проблема связана с проверками версий - , потому чтоРежим браузера управляет .Если проверки версий не относятся к IE8 иначе, чем к IE7, а режим документа - IE7 или режим quirks, то не должно быть никаких различий.

...