iframeアクションから親ウィンドウをリダイレクトする


312

親ウィンドウをiframeからリダイレクトするには、どのJavaScriptを使用する必要がありますか?

JavaScriptまたはその他の方法を使用して、親ウィンドウを新しいURLにリダイレクトするハイパーリンクをクリックしてもらいたい。


5
ウィンドウは、それ自体が、可能性がありIFrameすぎて、。受け入れられた回答は上部のウィンドウに対応しているため、質問を少し変更することをお勧めします。
ロンクライン、

回答:


521
window.top.location.href = "http://www.example.com"; 

前述のように、親iframeをリダイレクトします。


同じオリジンのポリシーはここでは適用されないと思います。他の人のiframeからサイトを切り離すことができるはずです。
ブライアンマコーリフ2014

1
Chromeで、@Parris jsfiddleは、このエラーがスローされます。URL「は、フレームのためのナビゲーションを開始するための安全でないJavaScriptの試みjsfiddle.net/ppkzS URL」がフレームから「parrisstudios.com/tests/iframe_redirect.html」。トップレベルウィンドウのナビゲーションを試みるフレームはサンドボックス化されていますが、「allow-top-navigation」フラグが設定されていません。
Bjarte Aune Olsen 2015

1
@BjarteAuneOlsen興味深いのは、ChromeまたはWebkitの最近の変更かもしれません。以前は間違いなく機能していました。それは数年になります:)。また、同じ回答元のポリシーが適用されたことを示す回答もありましたが、以前は正しくなかったものの、現在は正しく、コメントが間違っています-_-。
パリ2015年

4
@BjarteAuneOlsen-これはJSFiddleのiframeが意図的にサンドボックス化されているため、特定の機能(リダイレクトなど)が明示的に拒否されているためだと思います-JSを使用してJS Fiddleから移動し、作業を失う危険があります。 ..
Zhaph-Ben Duguid

10
人々はここで発生しているエラー「が理由と呼ばれるのiframeのための新しいHTML5属性であるsandbox」 - developer.mozilla.org/en-US/docs/Web/HTML/Element/iframesandbox属性防止は、ベースのiframe内の特定のアクションを取ったJavaScript許可されたアクションの特定のホワイトリスト。allow-top-navigationプロパティは、あなたが仕事にこのコードを許可するホワイトリスト、に有効にすることができますアクションのいずれかです。sandbox属性が不在の場合、すべてのアクションが許可されます。存在し、空の文字列の場合、すべてのアクションが拒否されます。
マーカスハリソン

115

それも<a href="..." target="_top">link</a>うまくいく


7
選択された答えは正しいですが、これは質問の意図に対してより良い答えだと思います。また、JSが無効になっている人にも有効です。
マイケル-2013年

これが最善の解決策であることに同意しますが、OPは特にJavaScriptを要求しました。一方、OPはアンカーを介してトリガーする必要があると指定しました-希望する結果を達成するためにアンカータグからJavaScriptを使用するように強制されるシナリオは見当たらないため、質問は誤解を招きます。
nocarrier 2014

2
とてもシンプルでエレガントです。チャームのように機能します:)
Yash

54
window.top.location.href = "http://example.com";

window.top フレーム階層の最上部にあるページのウィンドウオブジェクトを参照します。


9
window.top.location.hrefプロパティはIframeから更新できません。アクセス拒否の実行がスローされます。ローカルホストでテストしているときにのみ実行できます
Muhammad Ummar

4
@Ummar:これは、iFrameの親が同じドメイン、同じポート(同じ生成元ポリシー)である場合に機能し、異なる場合にアクセス拒否例外をスローして、セキュリティ違反を防止します
Quan Mai

5
真実ではない@Ummar、証拠としてjsfiddle.net/ppkzS。window.top.location.hrefを変更できます。あなたはそれを読むことができません。クロムで動作します。
Parris 2013

素晴らしいjsfiddle @Parris、それが私のために解決してくれます:)
Max Williams

2
疑わしい人の何人かがiframe内で次のようなことを試みていたのではないかと思います:window.top.location.href = window.top.location.href ;
mjj1409 2014


15

target="_parent"私にとってはうまくいきました。簡単で手間いらず!


これらは素晴らしいようです。JavaScriptではなくこの方法を使用することの欠点はありますか?
flyingL123 '17 / 09/17

私が知っていることではありません。何か見つけたら共有してください。
rDroid

7

@MIPは正しいですが、Safariの新しいバージョンでは、iframeへのリダイレクトアクセスを提供するためにサンドボックス属性(HTML5)を追加する必要があります。それらの間にスペースを入れて追加できるいくつかの特定の値があります。

リファレンス(スクロールする必要があります):https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

例:

<iframe sandbox="allow-top-navigation" src="http://google.com/"></iframe>

このsandbox属性により、のコンテンツに追加の制限セットが有効になることに注意してください<iframe>sandboxプロパティの値は、特定の制限を取り除きます。したがって、この機能の使用には注意してください。w3schools.com/tags/att_iframe_sandbox.asp
gitaarik


3

ユーザーが何もしなくても別のドメインにリダイレクトしたい場合は、プロパティを使用してリンクを使用できます。

target="_parent"

以前に述べたように、次に使用します:

document.getElementById('link').click();

自動的にリダイレクトさせる。

例:

<!DOCTYPE HTML>

<html>

<head>

</head>

<body>

<a id="link" target="_parent" href="outsideDomain.html"></a>

<script type="text/javascript">
    document.getElementById('link').click();
</script>

</body>

</html>

注:javascript click()コマンドは、リンクを宣言した後に実行する必要があります。



0

使ってみてください

window.parent.window.location.href = 'http://google.com'

シンプルなバージョン:parent.window.location = '<URL>';
shasi kanth

1
またはさらに簡略化:parent.location = 'url'
グリル


-2

親ウィンドウをiframeアクションからリダイレクトするには、window.top.location.hrefを使用する必要があります。

デモURL


1
私たちは誰ですか?:)あなたは答えにURLから本質的な部分を書いてもらえますか?URL /リンクは変更または削除される場合があります。
YesThatIsMyName

-8

同じ親のiframeによって親ウィンドウのiframeをリダイレクトします。

window.parent.document.getElementById("content").src = "content.aspx?id=12";
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.