有没有办法阻止IE9中的这个JavaScript错误

问题描述:

我有一个JavaScript代码显示覆盖在IE9中的问题,它在Chrome,Firefox甚至IE8中都能正常工作。但是,当在IE9中运行时,会发生一些奇怪的事情。 基本上,盘旋在是为了使覆盖一些文本出现,但在IE9中,第一个覆盖被克隆或什么的,所以我得到一个具有相同的样式和位置的第一个div的地带,但没有内容。 这里的HTML的外观的例子:有没有办法阻止IE9中的这个JavaScript错误

<img usemap="#mymap"/> 
<map id="mymap"> 
<area id="first" onmouseover="ShowOverlay(this);" onmouseout="HideOverlays()";> 
<area id="second" onmouseover="ShowOverlay(this);" onmouseout="HideOverlays()";> 
</map> 
<div id="first-Overlay" class="overlay" onmouseover="OverlayOnHover(this);" onmouseout="OverlayMouseOff(this);"> 
some text here. 
</div> 
<div id="second-Overlay" class="overlay" onmouseover="OverlayOnHover(this);" onmouseout="OverlayMouseOff(this);"> 
more text here. 
</div> 

而且它附着在JavaScript是:

<script type="text/javascript"> 
var PreviousOverlay; 
function ShowOverlay(sender) { 
    if (PreviousOverlay) { 
     PreviousOverlay.style.display = 'none'; 
    } 
    NewOverlay = document.getElementById(sender.id + '-Overlay'); 
    if (NewOverlay) { 
     NewOverlay.style.display = 'inline'; 
    } 
    PreviousOverlay = NewOverlay; 

    return false; 
} 
function HideOverlays() { 
    if (PreviousOverlay) { 
     PreviousOverlay.style.display = 'none'; 
    } 
    PreviousOverlay = null; 
    return false; 
} 
function OverlayOnHover(Overlay) { 
    Overlay.style.display = 'inline'; 
} 
function OverlayMouseOff(Overlay) { 
    Overlay.style.display = 'none'; 
} 
</script> 

在IE中使用Web开发工具,我可以改变“先覆盖”显示为内联,然后它将与getElementById('first-Overlay')返回的条一起显示。 有没有人知道是什么导致这在IE9中?就解决方法而言,我确实碰到了一堵砖墙。

我试过使用jQuery,该错误仍然发生。

最后,我的解决方法是在第一个div前添加一个带有绝对定位等的虚拟div。这个div永远不会显示,所以这个bug没有任何可见的效果。