我已经看到 IE9 与 IE8、FireFox 和 Webkit 的区别。考虑以下代码:
父源:
<!DOCTYPE html>
<html>
<head><title>iframe test page</title></head>
<body>
<h1>Parent window</h1>
<iframe src="//domain2/iframe.html"></iframe>
</body>
</html>
iframe 源(在单独的域上):
<!DOCTYPE html>
<html>
<head><title>iframe content</title></head>
<body>
<h1>iframe content</h1>
<script>function redirect() { window.parent.location = "/new-href"; } </script>
<a href="javascript:redirect()">Redirect the parent window please</a>
</body>
</html>
如果主页在 IE8 中打开(或 IE9 设置为在 IE8 模式或 Chrome 23 或 FF16 下运行)单击链接会导致导航到 //(iframe domain)/new-href 而在 IE9 中则会转到 //(original父域)/new-href
我仍在研究如何解决这个问题,如果/当我有更多信息时,我会更新这个问题。
更新:为 iframe 链接设置 target="_top" 属性可以解决这个问题。
更新的 iframe 源(在单独的域上):
<!DOCTYPE html>
<html>
<head><title>iframe content</title></head>
<body>
<h1>iframe content</h1>
<a href="/new-href" target="_top">Redirect the parent window please</a>
</body>
</html>
单击此更新的 iframe 代码中的链接会将父(整个)窗口重定向到 IE8 和 IE9 中的 //(iframe domain)/new-href(据我所知,所有浏览器也是如此)。这就是你想做的,对吧?
例如,如果您想让 iframe 中的所有标签导致顶部/主/父窗口在某处导航,而不是 iframe 在某处导航,则使用以下内容:
$("iframe a").attr("target", "_top");
另请参阅目标属性文档