5

exampleA.com

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

exampleB.com

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

Chrome(およびほとんどのブラウザを想定)では、iframe内の[テスト]ボタンをクリックすると親ページがに変更されますexampleB.com/testが、IEでは親URL(exampleA.com/test)を基準にした場所が設定されます。

iframeに相対的なURLを持つすべてのブラウザでテストボタンを機能させるにはどうすればよいですか?


<a href="/test" target="top">Test</a>これは、コメントで述べられているように、次のようなHTMLで実行できます 。この質問を参照してください。

ただし、マウスクリックではなく、イベントに応じて親の場所を変更するためのJavaScriptベースのソリューションが必要です。

4

1 に答える 1

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>

このSO回答からベースURL(window.location.origin)を取得するコードを見つけました

于 2013-01-29T20:13:17.010 に答える