IE9后退按钮与锚定div无法正常工作

时间:2013-02-15 14:36:21

标签: javascript internet-explorer onclick internet-explorer-9 browser-history

据我所知,这是一个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中的一个错误,我也假设早期版本。如果没有彻底修改我的代码,是否有适当的方法来处理这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

正在运行示例:jsFiddle