Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   IE8 nextSibling баг (https://javascript.ru/forum/events/38927-ie8-nextsibling-bag.html)

Apollo_440 08.06.2013 14:55

IE8 nextSibling баг
 
Доброго дня, уважаемые форумчане!

Сегодня заметил один странный баг, именно в IE8.

Решил прогуляться по всем соседним нодам с помощью nextSibling. После получения html всех узлов, по которым прошелся увидел странную вещь: IE8 добавляет "огрызки" от родительских нод. Вот что получилось:

<FORM id=site-search data-url="/en-US/search">
<P onclick="var t = this; while(t = t.nextSibling) alert(t); return false"><INPUT name=q id=q role=search type=text placeholder="Search MDN"> <NOSCRIPT></NOSCRIPT></P><INPUT name=sitesearch type=hidden value=developer.mozilla.org> 
<DIV id=site-search-gg></DIV></FORM><A id=tabzilla href="http://www.mozilla.org/">mozilla</A> 
*!*
<DIV></DIV></HEADER>
*/!*
<!-- top toolbar --><SECTION id=nav-toolbar>
<DIV>
<DIV class=wrap><!-- right floated navigation --><NAV id=tool-menus role=navigation>
<UL id=tools>
<LI class=menu><A class=toggle href="#page-tools">This page</A> 
<UL class=sub-menu id=page-tools>
<LI class=page-print><A title="Print page" onclick="return window.print();" href="#">Print this page</A> </LI>
<LI><A href="/en-US/docs/new?parent=41044">New sub-page</A> </LI>
<LI><A href="/en-US/docs/new?clone=41044">Clone this page</A> </LI></UL></LI>
<LI class=menu><A class=toggle href="#">Languages</A> 
<UL id=translations>
<LI><A href="/en-US/docs/DOM/treeWalker.filter$locales">Add translation</A> </LI></UL></LI></UL></NAV><!-- left crumb navigation --><NAV class=crumbs role=navigation>
<OL>
<LI class=crumb><A href="/en-US/docs/DOM">Document Object Model (DOM)</A> </LI>
<LI class=crumb>treeWalker.filter</LI></OL></NAV></DIV></DIV></SECTION>
<DIV>***</DIV><SECTION id=content>


Не подскажете, как обойти данный баг?

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

danik.js 08.06.2013 14:59

Через валидатор свой код прогнал?

Apollo_440 08.06.2013 15:02

В остальных браузерах нормально в т.ч. и в IE9

danik.js 08.06.2013 15:04

Цитата:

Сообщение от danik.js
Через валидатор свой код прогнал?

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

Apollo_440 08.06.2013 15:06

Вот код IE9

<form id="site-search" data-url="/en-US/search">
            <p onclick="var t = this; while(t = t.nextSibling) alert(t); return false">
                <input name="q" id="q" role="search" type="text" placeholder="Search MDN" value="">
                <noscript>
                    &lt;button type="submit"&gt;Search&lt;/button&gt;
                </noscript>
            </p>
            <input name="sitesearch" type="hidden" value="developer.mozilla.org">
            <div id="site-search-gg"></div>
        </form> <a id="tabzilla" href="http://www.mozilla.org/">mozilla</a>

        
        
        <!-- top toolbar -->
        <section id="nav-toolbar">
            <div>
                <div class="wrap">
                    <!-- right floated navigation -->
                    <nav id="tool-menus" role="navigation">
                        <ul id="tools">
                            <li class="menu"> <a class="toggle" href="#page-tools">This page</a>

                                <ul class="sub-menu" id="page-tools">
                                    <li class="page-print"> <a title="Print page" onclick="return window.print();" href="#">Print this page</a>
                                    </li>
                                    <li><a href="/en-US/docs/new?parent=41044">New sub-page</a>
                                    </li>
                                    <li><a href="/en-US/docs/new?clone=41044">Clone this page</a>
                                    </li>
                                </ul>
                            </li>
                            <li class="menu"> <a class="toggle" href="#">Languages</a>

                                <ul id="translations">
                                    <li><a href="/en-US/docs/DOM/treeWalker.filter$locales">Add translation</a>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </nav>
                    <!-- left crumb navigation -->
                    <nav class="crumbs" role="navigation">
                        <ol>
                            <li class="crumb"><a href="/en-US/docs/DOM">Document Object Model (DOM)</a>
                            </li>
                            <li class="crumb">treeWalker.filter</li>
                        </ol>
                    </nav>
                </div>
            </div>
        </section>
        <div>***</div>

Другая проблема, что IE8 не закрывает SECTION тег, а так же не может получить содержимое noscript

Apollo_440 08.06.2013 15:14

с той строкой вы были правы, код оказался битым :). Ну а как получить noscript содержимое с IE?

devote 08.06.2013 19:39

Цитата:

Сообщение от Apollo_440
Ну а как получить noscript содержимое с IE?

в ИЕ8 никак, он удаляет содержимое этого тега если включен JavaScript ну или просто его не добавляет.. То есть тег NOSCRIPT в ИЕ8 всегда пуст.

это легко посмотреть так:
<noscript>
                    &lt;button type="submit"&gt;Search&lt;/button&gt;
</noscript>
<script>
    alert(document.getElementsByTagName('noscript')[0].parentNode.innerHTML);
</script>
во всех браузерах, внутри тега noscript что-то есть, а в ИЕ8 он пуст

Aetae 08.06.2013 22:10

Цитата:

Сообщение от devote (Сообщение 255369)
во всех браузерах, внутри тега noscript что-то есть, а в ИЕ8 он пуст

Юмористы.)

devote 08.06.2013 22:40

Цитата:

Сообщение от Aetae
Юмористы.)

что тут юморного?

Aetae 08.06.2013 23:19

Цитата:

Сообщение от devote (Сообщение 255401)
что тут юморного?

Да просто не перестают поражать маразматические "особенности" ie. Сколько уже этим занимаюсь - а всё равно постоянно что-нибудь новенькое попадается. :)


Часовой пояс GMT +3, время: 04:52.