IE6 ошибка рендеринга. Некоторые проанализированные <li>элементы теряют свои закрывающие теги - PullRequest
1 голос
/ 05 мая 2010

Я много лет работал с IE6 [всхлип], но никогда раньше не сталкивался с этой конкретной ошибкой, и я не могу найти ссылку на нее в Интернете. Кажется, проблема в том, как IE6 анализирует HTML вложенного списка. Хотя разметка верна, IE6 каким-то образом обрабатывает код при его анализе и удаляет закрывающие теги некоторых элементов <li>.

Например, возьмите следующий код:

<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<div>
    <ul>
        <li><a href=''>Child A</a>
            <div>
                <ul>
                    <li><a href=''>Grandchild A</a></li>
                </ul>
            </div>
       </li>
       <li><a href=''>The Child B Which Is Not A</a>
            <div>
                <ul>
                    <li><a href=''>Grandchild B</a></li>
                    <li><a href=''>Grandchild C</a></li>
               </ul>
            </div>
      </li>
      <li><a href=''>Deep Purple</a></li>
      <li><a href=''>Led Zeppelin</a></li>
    </ul>
</div>
</body>
</html>

Теперь посмотрим, как IE6 отображает этот код после того, как он запустил его через механизм визуализации IE6:

<HTML>
<HEAD>
<TITLE>My Page</TITLE></HEAD>
<BODY>
    <DIV>
        <UL>
            <LI><A href="">Child A</A> 
                <DIV>
                    <UL>
                        <LI><A href="">Grandchild A</A> </LI>
                    </UL>
                </DIV>
            <LI><A href="">The Child B Which Is Not A</A> 
                <DIV>
                    <UL>
                        <LI><A href="">Grandchild B</A> 
                        <LI><A href="">Grandchild C</A> </LI>
                    </UL>
                </DIV>
            <LI><A href="">Deep Purple</A> 
            <LI><A href="">Led Zeppelin</A> </LI>
        </UL>
    </DIV>
</BODY>
</HTML>

Обратите внимание, что в некоторых элементах <li> больше нет закрывающих тегов, даже если они присутствовали в исходном HTML.

Кто-нибудь знает, что может вызвать эту ошибку и можно ли ее избежать? Похоже, это является источником некоторых проблем с визуальным отображением в IE6.

Большое спасибо за любой совет.

1 Ответ

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

</li> не требуется в режиме чистого HTML (не XHTML). То же самое относится к </p> и еще нескольким закрывающим тегам. Движок IE6 мог как-то их «оптимизировать».

Вот выдержка из спецификации W3C об элементе <li>:

<!ELEMENT LI - O (%flow;)*             -- list item -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: требуется , Конечный тег: необязательно

Обратите внимание на последнюю строку.

Проблемы с визуальным отображением, о которых вы говорите, чаще всего связаны с hasLayout ошибками .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...