親ウィンドウでiframeからのリンクを強制的に開く方法


回答:


617

最善の解決策はベースタグを使用することでした。以下をiframeのページの先頭に追加します。

<base target="_parent">

これにより、ページ上のすべてのリンクが親ウィンドウに読み込まれます。リンクを新しいウィンドウでロードする場合は、次を使用します。

<base target="_blank">

このタグは、すべてのブラウザで完全にサポートされています。


4
この運賃はクロスブラウザですか?
チャーリーシュリーサー2012年

3
@Wilf私は完全に正しくありませんでした:;)これは、次のリンクのデフォルトのブラウジングコンテキストを設定するため、の<base target>前に来る必要があり<a href>ます。相対URLが解決されるベースURLを設定するため<base href>、URL参照(<* href> <* src> <form action> <object data>…)の前に来る必要があります。
サム

5
なぜ私が答えてから 1 年、まったく同じ答えでこの質問に答えたのですか?しかし、あなたは選ばれました。これは奇妙です。
vsync 2014

5
私はあなたの答えが新しいウィンドウでリンクを開くのに対し、私のものは元の質問であったiframeの親ウィンドウでリンクを開くためだと思います。雷を盗んでごめんなさい!
Chris Vasselli 2014

1
なお、<baseタグは、仕様に応じて何の閉鎖を持っていないw3.org/TR/html5/document-metadata#the-base-elementそれがあるべきよう<base target="_parent" >
マーク・庄屋

147

ターゲット属性を使用:

<a target="_parent" href="http://url.org">link</a>

1
私はこれを試して、新しいウィンドウで開きます
Haim Evgi

3
私からの+ 1、base target = "_ parent"は機能しますが、target = "_ parent"は私にとって失敗したことはありません!

7
<base target="_blank">大丈夫ですが、ここでの問題は1つのリンクについてであり、iframe上のすべてのリンクの動作を変更することについてではありません。私にとってはこれが正解です。
kriskodzi

34

JavaScriptの場合:

window.parent.location.href= "http://www.google.com";

28

任意のオプションを使用できます

親ページのみの場合:

親ページまたは親iframeへのすべてのリンクを開く場合は、iframeのヘッドセクションで次のコードを使用します。

<base target="_parent" />

または

親ページまたは親iframeへの特定のリンクを開く場合は、次の方法を使用します。

<a target="_parent" href="http://specific.org">specific Link</a>
<a  href="http://normal.org">Normal Link</a>

または

ネストされたiframeの場合:

すべてのリンクをブラウザーウィンドウに開く(ブラウザーのURLにリダイレクトする)場合は、iframeのヘッドセクションで次のコードを使用します。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
    $(window).load(function(){
        $("a").click(function(){
            top.window.location.href=$(this).attr("href");
            return true;
        })
    })
</script>

または

特定のリンクをブラウザーウィンドウに開く(ブラウザーのURLにリダイレクトする)場合は、次の方法を使用します。

<a  href="http://specific.org"   target="_top" >specific Link</a>

または

<a  href="javascript:top.window.location.href='your_link'">specific Link</a>
<a  href="javascript:top.window.location.href='http://specific.org'">specific Link</a>
<a  href="http://normal.org">Normal Link</a>

1
良い答えです。特定のリンクにこれを使用する必要がありましたが、受け入れられた答えは、ページ上のすべてのリンクのターゲットを変更する方法のみを説明しています。おかげで
dading84

15

と呼ばれるHTML要素がありbaseます。

ページ上のすべてのリンクのデフォルトURLとデフォルトターゲットを指定します。

<base target="_blank" />

指定する_blankことにより、iframe内のすべてのリンクが外部で開かれることを確認します。


これはネストされたiframeで継承されますか?
beppe9000

7

すでに述べたように、ターゲット属性を使用することもできますが、XHTMLでは技術的に廃止されました。そのため、通常はのようなJavaScriptを使用できますparent.window.location



@ PaulD.404sに投稿したリンクを待ちます。
Dan Loewenherz 2014年

1
@ダン:ああ、はい、ありがとうございます。最新の
Paul D. Waite

7

内のtarget="_parent" 属性を試してくださいanchor tag


私はこれを試して、新しいウィンドウで開きます
Haim Evgi

4
target = "_ top"をお試しください。iframeにはネストされたiframeが含まれている可能性がありますか?または実際のリンクはonclickイベントのJavaScriptによって開かれますか?
Gee

5

Webページでiframeを使用している場合、iframeからHTMLハイパーリンク(アンカータグ)を使用してページ全体を変更しているときに問題が発生する可能性があります。この問題を軽減する2つの解決策があります。

解決策1.次の例に示すように、アンカータグのターゲット属性を使用できます。

<a target="_parent" href="http://www.kriblog.com">link</a>

解決策2. JavaScriptを使用して、iframeから親ウィンドウで新しいページを開くこともできます。

<a href="#" onclick="window.parent.location.href='http://www.kriblog.com';">

target="_parent"XHTMLでは⇒ は推奨されていませんが、HTML 5.xではまだサポートされています。

詳細は、次のリンクhttp://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.htmlから読むことができます


4

最も用途が広く、最もクロスブラウザなソリューションは、「base」タグの使用を避け、代わりに「a」タグのtarget属性を使用することです。

<a target="_parent" href="http://www.stackoverflow.com">Stack Overflow</a>

<base>タグはそれほど万能で、ブラウザは、より多くのクロスブラウザのテストを必要とし、文書内での配置のための要件で矛盾しています。プロジェクトや状況によっては、ブラウザーの理想的なクロスブラウザー配置を実現するのが難しい場合や、まったく実行できない場合さえあります。<base>タグのます。

タグのtarget="_parent"属性を使用してこれを行うと、<a>ブラウザにとって使いやすくなるだけでなく、iframeで開くリンクと親で開くリンクを区別することもできます。


3

<a target="parent">新しいタブ/ウィンドウで<a target="_parent">リンクを開きます...新しいタブ/ウィンドウを開かずに、親/現在のウィンドウでリンクを開きます。アンダースコアを忘れないでください!


2

うん、見つけた

<base target="_parent" />

これは、iframeで開いているすべてのiframeリンクを開くのに役立ちます。

そして

$(window).load(function(){
    $("a").click(function(){
        top.window.location.href=$(this).attr("href");
        return true;
    })
})

これは、ページ全体またはページの特定の部分に使用できます。

ご協力ありがとうございます。



0
   <script type="text/javascript"> // if site open in iframe then redirect to main site
        $(function(){
             if(window.top.location != window.self.location)
             {
                top.window.location.href = window.self.location;
             }
        });
    </script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.