0

据我所知,这是一个特定于 IE 的问题,我在 IE9 中也遇到过。

如果您查看此 jsFiddle: http: //jsfiddle.net/dvrcthewrld/uaP3v/17/ ,您可能会发现它在框架中运行良好。即:仅当模态框可见时,单击偏移 div 或覆盖 div 会导致 history.back 事件,从而导致模态框消失。

<div id="dbw" name="dbw" class="dumbBoxWrap">
    <div class="dumbBoxOverlay" onclick="history.back()" >
        &nbsp;
    </div>
    <div class="vertical-offset" onclick="history.back()" >
        <div class="dumbBox" onclick="event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true)
;">
    <p>Content goes here</p>
        </div>
    </div>
</div>

但是,如果您完整地查看它,而不是在一个框架中:http: //fiddle.jshell.net/uaP3v/18/show/ 那么您会发现 IE9 适当地更改了 url,但模式并没有按预期消失。无论是通过单击 div 还是使用浏览器的后退按钮触发后退事件,都会发生这种情况。

这似乎是 IE9 中的一个错误,我也假设是早期版本。有没有适当的方法来处理这个问题而无需大幅修改我的代码?

4

1 回答 1

1

这是一个 hacky 解决方案,但它似乎有效

window.onhashchange = function(){
    document.body.className = document.body.className + "";
}

运行示例:jsFiddle

于 2013-02-15T15:16:22.163 回答