如何在IE中使用JavaScript将iframe父(顶部)位置更改为相对于iframe的url?

时间:2013-01-29 19:39:43

标签: javascript iframe cross-browser relative-path

exampleA.com

<iframe src="http://exampleB.com/">

exampleB.com

<button onclick="top.location='/test'">Test</button>

在Chrome中(我假设大多数浏览器),单击iframe中的“测试”按钮会将父页面更改为exampleB.com/test,但在IE中它会设置相对于父URL的位置({{1 }})。

如何让测试按钮在所有浏览器中都能使用相对于iframe的网址?


注意

这可以在HTML中完成,如评论中提到的exampleA.com/test。请参阅this question

但是,我需要(编辑)一个基于JavaScript的解决方案,以便根据事件而不是鼠标点击来更改父位置。

1 个答案:

答案 0 :(得分:5)

看起来我已经回答了我自己的问题......

<强> exampleB.com

<button onclick="topLocation('/test')">Test</button>

<script>
var topLocation = function(url) {
    // make sure its a relative url
    if (url[0] === '/' && url[1] !== '/'){
        // x-broswer window.location.origin 
        if (!window.location.origin) window.location.origin = window.location.protocol+"//"+window.location.host;
        window.top.location = window.location.origin + url;
    } else {
        window.top.location = url;
    }
}
</script>

我找到了从this SO answer获取基本网址(window.location.origin)的代码