2011-12-27 8 views
0

ボタンが1つのページがあります。クリックすると、そのボタンは、私は、このページはインラインフレーム内に埋め込まれたときに、このナビゲーションは働きたいhttp://google.com/iframeから別のページに移動するにはどうすればよいですか?

$("#button").click(function(){ 
    window.location="http://google.com"; 
}); 

に移動します。私は外側のホストページに影響を与えたくはなく、むしろiframeの内容だけに影響を与えたいと思います。

  1. ない場合、私は、IFRAME
  2. に含まれてる場合は、上記のようにナビゲートし、検出:に優れたクロスプラットフォームの方法は何ですか。
  3. はいの場合は、iframeのみをナビゲートしますか?

(私は今説明したアルゴリズムを実装しようとするつもりですが、関係なく、私はこの質問が投稿されるのに十分面白いと思います。私が成功した場合、私は私の解決策を投稿します)

答えて

5
私は、IFRAME

if (window != window.top) { 
    // the page is inside an iframe 
} 

2に含まれてる場合ではない場合

1)上記のようにナビゲートし、検出)。

そうならば、唯一のiframeをナビゲート)

3上記のように移動しますか?

window.location.href = 'http://www.google.com';と書くと、トップページの内容ではなく、iframeの内容がナビゲートされます。トップページをナビゲートする場合は、このトップページがiframeと同じドメインにあり、window.top.location.hrefを使用できる場合にのみこれを行うことができます。


UPDATE:

のiframe内のX-Frame-Options: SAMEORIGINレスポンスヘッダを設定するサイトにリダイレクトするからあなたを禁じるブラウザに組み込まれたセキュリティメカニズムがあります。それはhttp://www.google.comの場合です。このサイトに移動し、使用しているFireBugまたは開発者用ツールバーで応答のHTTPヘッダーを見るだけで、このヘッダーが表示されます。あなたはそれにリダイレクトすることはできませんし、次のエラーメッセージが表示されます。

Refused to display document because display forbidden by X-Frame-Options. 

それは基本的にその作者あなたはiframe内にそれらを埋め込むことを望まなかったいくつかのサイトで実装されているセキュリティ・メカニズムです。

+0

トップドメインではなく、iframeコンテンツのみをナビゲートしたいと考えています。 'window.location = url'を実行することができませんでした。 – ripper234

+0

@ ripper234、iframeの内側から** window.locationを使用するとどうなりますか?スクリプトがiframe内で実行されているかどうか私はあなたがトップページをリダイレクトする方法ではないと疑い始めます。 –

+0

スクリプトは** iframe内**から実行されています。ブラウザ(クロム)は短い「読み込み中」のアニメーションを表示します(新しいページを読み込むときなど)。実際には移動しません。 – ripper234

関連する問題