Hashchange事件在IE iframe中无法正常工作

时间:2014-01-07 05:44:29

标签: html internet-explorer hashchange

IE中的hashchange事件似乎从iframe内部触发时,从目标为其同域父窗口的锚点触发。考虑以下超级基本HTML页面(为简单起见,故意不使用像jQuery这样的库)。

parent.htm

<!DOCTYPE html>
<html>
<head>
    <title>Parent</title>
    <script type="text/javascript">
        window.onhashchange = function () {
            alert(window.location.hash);
        };
    </script>
</head>
<body>
    <p><a href="#A">A</a></p>
    <iframe src="child.htm"></iframe>
    <script type="text/javascript">
        document.write('<p>Loaded at ' + new Date() + '</p>');
    </script>
</body>
</html>

child.htm

<!DOCTYPE html>
<html>
<head>
    <title>Child</title>
</head>
<body>
    <p><a href="parent.htm#B" target="_top">B</a></p>
    <p><a href="parent.htm#C" target="_parent">C</a></p>
    <p><a href="#" onclick="top.location='parent.htm#D';">D</a></p>
</body>
</html>

在Chrome和Firefox中,所有四个链接(A,B,C,D)都会产生警报。在IE中,链接A和D将触发警报,但是B和C将导致整页重新加载而没有警报。我找不到任何解释这个预期行为的文档。

我可以通过附加事件处理程序破解修复IE子链接的jQuery填充程序,但是有什么方法可以让IE识别哈希变换吗?

0 个答案:

没有答案