Div не скрывается с использованием prototype.js только в IE - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь сделать довольно простое скрытие / показ div'ов, используя prototype.js.Страница работает полностью корректно в Firefox, Chrome и Safari, но одна конкретная часть не будет работать в IE: первоначальное скрытие div.На странице есть три элемента div, а javascript написан так, что вы можете переключаться между ними, при этом одновременно отображается только один элемент.Эта часть также отлично работает в IE, но по какой-то причине при первой загрузке страницы отображаются все 3 элемента div.Я перепробовал много вещей, чтобы скрыть их, оставив меня в этом текущем воплощении:

Соответствующий HTML:

    <div class="linkbar">
        <a class='normal' href="JavaScript:void()" sec="map">Map</a><br><br>
        <a class='normal' href="JavaScript:void()" sec="tour">Tour</a><br><br>
        <a class='normal' href="JavaScript:void()" sec="vid">Videos</a><br><br>
    </div>

<div class="bg">
    <div class="section" id="map" sec="map">
        ...html here...
    </div>
    <div class="section" id="tour" sec="tour">
        ...html here...
    </div>
    <div class="section" id="vid" sec="vid">
        ...html here...
    </div>
</div>

Соответствующий Javascript:

 document.observe('dom:loaded', function() {
    showSection("map");
    var currSection = 'map';

    $$('a.normal').each(function(p){
        Event.observe(p,'click',function(){
            var hr = $(this).readAttribute("sec");
            showSection(hr);
            currSection = hr;
        });
    });

    function showSection(sectionname){
        $$('div.section').each(function(d){
            d.hide();
        });
        $(sectionname).show();
    }
});

</script>

Такв IE, как только я выбираю любую из ссылок, она правильно скрывает div, а затем открывает правильную, что указывает на то, что я могу найти и скрыть div.Однако, когда я впервые загружаю страницу в IE, она ничего не скрывает.Мысли о том, почему это происходит?

РЕДАКТИРОВАТЬ: После дальнейших исследований, я думаю, это может быть связано с проблемами с IE и проверки загрузки DOM.

1 Ответ

0 голосов
/ 12 февраля 2012

Разобрался.Prototype.js перехватывал ошибку переполнения стека, а затем снова выдавал ту же ошибку в блоке catch.По какой-то причине в IE, когда это было сгенерировано, код, выполняющий первоначальное скрытие, не вызывался.Я зашел в prototype.js и прокомментировал строку в блоке catch, которая повторно выдает ошибку (828), и теперь все работает правильно.

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