window.parent.location.href IE9错误?

时间:2011-07-13 19:21:47

标签: javascript internet-explorer internet-explorer-9 window.location window.parent

情景:

  1. domain1.com托管域名网站的iFrame。

  2. domain2.com使用javascript触发需要的动态链接 路由到父窗口。

  3. 链接都是相对路径。

  4. 点击/linkA.html(在domain2.com上的iframe中)将父级路由到 domain1.com/linkA.html。

    var _generic =“/ linkA.html”;

        $("#canvas").each( function () {
            $(this).children("a").attr("href",_generic);
            $(this).click( function(e) {
                e.preventDefault();
                window.parent.location.href = _generic;
            } );
        } );
    

  5. 将链接更改为absolute(domain2.com/linkA.html)可解决功能问题。

    有没有人遇到过这个?

4 个答案:

答案 0 :(得分:1)

为了让浏览器在设置相对路径时解析整个url,首先需要读取当前的href,这会被SOP阻止。

但我很确定如果您使用parent.location代替parent.location.href,那么这样就可以了。

答案 1 :(得分:1)

您应该尝试使用window.opener.location代替window.parent.location

答案 2 :(得分:0)

我已经看到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域)/ new-href,而在IE9中,它会转到/ /(原始父域)/ 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和&amp;中的//(iframe域)/ new-href。 IE9(据我所知,也是所有浏览器)。这就是你想要做的,对吧?

e.g。如果你想在iframe中制作所有标签,导致top / main / parent窗口导航到某个地方,而不是导航到某个地方,那么使用这样的东西:

$("iframe a").attr("target", "_top");

另见target attribute documentation

答案 3 :(得分:0)

URL中的正斜杠隐式文件夹在Moz中有效。浏览器,但使用资源管理器时,来自同一文件夹的链接不会加正斜杠。 这只是X浏览器语法。 您可能做得更好,。/(使用资源管理器点正斜杠,但正确的方法是在相同文件夹URL的文件名前不加斜杠)。