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

Zac*_*bey 5 javascript iframe cross-browser relative-path

exampleA.com

<iframe src="http://exampleB.com/">
Run Code Online (Sandbox Code Playgroud)

exampleB.com

<button onclick="top.location='/test'">Test</button>
Run Code Online (Sandbox Code Playgroud)

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

如何使用相对于iframe的URL在所有浏览器中使用测试按钮?


注意:

这可以在HTML中完成: <a href="/test" target="top">Test</a>如评论中所述.看到这个问题.

但是,我需要(编辑)基于JavaScript的解决方案,以便更改父位置以响应事件,而不是鼠标单击.

Zac*_*bey 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>
Run Code Online (Sandbox Code Playgroud)

我从这个SO答案中找到了获取基本URL(window.location.origin)的代码