5

示例A.com

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

例子B.com

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

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

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


注意

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

但是,我需要(ed)一个基于 JavaScript 的解决方案来更改父位置以响应事件,而不是单击鼠标。

4

1 回答 1

5

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

例子B.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>

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

于 2013-01-29T20:13:17.010 回答