Проблема рендеринга в разделе Firefox 3.6 - PullRequest
0 голосов
/ 31 августа 2011

Я работаю над исправлением ошибки отображения на веб-странице друга в Firefox 3.6.Он отображается правильно во всех других браузерах.Я сузил проблему до следующего: в большинстве браузеров HTML генерируется и анализируется следующим образом:

<section class="sidebar" style="height: 1106px; "><div class="sidebar-widget"><h3     class="sidebar-widget-title">Shopping Cart</h3><div id="sliding_cart" class="shopping-cart-wrapper">
    <p class="empty">
        Your shopping cart is empty<br>
        <a target="_parent" href="https://underwateraudio.com/products-page/" class="visitshop" title="Visit Shop">Visit the shop</a>   
    </p>

</div> </div></section>

<section id="main-content"> ... </section>

Однако в Firefox 3.6 страница отображается так, как будто строки </div> </div> </section> не былосовсем.Я посмотрел на него в Firebug и, действительно, Firefox по какой-то причине удаляет этот конечный тег.Я не могу понять, почему Firefox 3.6 убирает этот тег.

Если вы хотите увидеть саму страницу, посмотрите на https://underwateraudio.com/underwater-audio-faq/. Домашняя страница выглядит хорошо, но все остальные страницы (достигнутынажав на верхнюю панель) сломались.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Ваш образец не соответствует вашей странице.

Проблема в том, что у вас недостаточно тегов </div>. Внутри раздела с class = "sidebar" есть три начальных тега div

 <div class="sidebar-widget">
 <div id="sliding-cart">
 <div class="wpsc_cart_loading">

но только два конечных тега div и затем тег конечного раздела.

В этой ситуации современные браузеры, такие как Firefox 4 и более поздние, следуют правилам парсинга HTML5. Соответствующий говорит , что когда парсер встречает:

Конечный тег, имя тега которого одно из: "address", "article", "aside", "blockquote", "button", "center", "details", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "list", "menu", "nav", "ol", "pre", "section", "summary", "ul"

Если стек открытых элементов не имеет элемента в области видимости с тем же именем тега, что и у токена, то это анализ ошибка; игнорировать токен.

В противном случае выполните следующие действия:

  1. Создание подразумеваемых конечных тегов.

  2. Если текущий узел не является элементом с таким же именем тега что касается токена, то это ошибка разбора.

  3. Высовывать элементы из стека открытых элементов до элемента с тем же именем тега, что и токен, извлеченный из стека.

Шаг 1 в этом случае не действует. Шаг 2 просто указывает, что что-то не так, но шаг 3 говорит о том, что там должен был быть тег </div>, а затем сопоставьте тег </section> с его начальным тегом. Поэтому в других браузерах ваша страница считается исправной.

Но Firefox 3.x предшествует алгоритму синтаксического анализа HTML5, что означает, что вы находитесь в зависимости от того, какое исправление ошибок было у браузера. Вам может повезти, а может и нет. В этом случае отсутствующий тег end div заставляет Firefox отказаться от тега </section>, потому что он этого не ожидал.

0 голосов
/ 31 августа 2011

Основываясь на некоторых быстрых исследованиях, не похоже, что Firefox получил поддержку <section> до FF4.

https://developer.mozilla.org/en/HTML/Element/section

Возможно, с использованием HTML5Shim (для более старых FF)поможет исправить эту проблему?

http://code.google.com/p/html5shim/

...