有没有办法在IE9中阻止这个javascript错误

时间:2012-08-16 06:17:36

标签: javascript internet-explorer-9

我有一些问题,一些javascript代码显示IE9中的叠加层,它在Chrome,Firefox甚至IE8中运行良好。然而,当在IE9中运行时,会发生一些奇怪的事情。 基本上,将鼠标悬停在are上是为了使叠加显示一些文本,但在IE9中,第一个叠加层正在被克隆或者其他东西,所以我得到一个带有相同样式和第一个div的位置的条带,但没有的内容。 以下是HTML外观的示例:

<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 Developer工具,我可以将“first-Overlay”显示更改为内联,然后它将与getElementById('first-Overlay')返回的条带一起显示。 有没有人知道是什么原因导致IE9?就思考变通方法而言,我确实碰到了一堵砖墙。

1 个答案:

答案 0 :(得分:0)

我尝试使用jQuery,但仍然发生了错误。

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