2012-04-24 7 views
7

ここで間違った質問をしている可能性がありますので、私が達成しようとしていることについて少し詳しく説明します。iFrameでリダイレクトを検出する

サポートチケットを追跡するためにサードパーティのウェブアプリを使用しています。ユーザーが記入してドメインに送信するフォームのコードを提供します。このフォームを2つの異なるドメインで使用したいと思いますが、残念ながら第三者がハードコーディングされた単一のリダイレクト値を使用しています。これにより、私のサイトの1つが提出後にドメインを切り替えるようになります。

フォームをiFrameに埋め込み、フォームの送信が成功したときにリダイレクトを検出し、自分のページの1つにリダイレクトできると考えていました。

擬似コード:

iframe.detectRedirection 
if (redirect == 'xyz.html') { 
    //do my own redirection in main window. 
} 

だから、戻って私の元の質問に - どのように私はiframe内のリダイレクトを検出することができますか?

+0

多分、jqueryを使用してフォーム送信イベントをバインドし、フォーム送信を自分で処理し、応答コードを確認できますか? –

+0

@RetoAebersold - 素晴らしい考えですが、私は実際に自分自身を考えました。しかし、フォームは添付ファイルを送信するので、代わりにAJAX経由で送信することはできません。 – mrtsherman

答えて

9

リダイレクトが第二の負荷に発生した場合は、さらに多くの段階がある場合にだけ、Xを変更

//var to count times iframe has loaded 
var timesRefreshed = 0; 

//detect iframe loading/refreshing 
$("iframe").load(function(){ 

    //if second refresh, change frame src - ie dont count first load 
    if(timesRefreshed == 1){ 
     $(this).attr("src","my site url here"); 
    } 

    //add to times resreshed counter 
    timesRefreshed++; 

}); 

フレームローディングとさわやか

を検出する

$("iframe").load(function(){ 
    //The iframe has loaded or reloaded. 
}); 

を試してみて、可能性ステージの数へ

これは完全な証明ではありません。他のサイトがステージなどを追加した場合に壊れてしまう可能性がありますが、他のサイトを管理していないと思うと最高です。

+0

ロードより早く発生するイベントはありますか?私は 'ready'を試みましたが、それは誘発しませんでした。残念ながら、iframeは 'load'イベントが発生する前に他のウェブサイト全体を読み込んでしまい、とてもうまく見えません。 – mrtsherman

+0

また、xドメイン起源のポリシーの問題にも当てはまります。私はこれがあなたがリフレッシュされた回数だけ行くのを選んだ理由だと思いますか? – mrtsherman

+0

私が考えることができる唯一の方法は、iframe内のサイトが別のドメイン上にあるため、リフレッシュをカウントすることです。そのため、セキュリティ上の理由からアクセスできません。病気があり、あなたに戻ってきます。 –

関連する問題