我正在尝试使用prototype.js做一些相当简单的隐藏/显示div。该页面在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,这将向我表明它能够找到并隐藏div。但是,当我第一次在IE中加载页面时,它不会隐藏任何内容。关于为什么会这样的想法?
编辑:经过进一步研究,我认为这可能与IE的问题和检查DOM加载有关。
答案 0 :(得分:0)
想出来。 Prototype.js捕获了堆栈溢出错误,然后在catch块中重新抛出相同的错误。出于某种原因,在IE中抛出它时,没有调用执行初始隐藏的代码。我进入了prototype.js,并在catch块中注释掉了重新抛出错误的行(828),现在情况正常。