2011-01-19 25 views
1

ドメインAにホストされているクレジットカード決済フォームのビューがあります。ドメインBには、ドメインAのクレジットカードフォームにiframeを持つ別個のウェブサイトがあります。iframe内のコンテンツに対してajax置換を行う際にiframeのonloadイベントをトリガーする

ドメインAのフォームは、このようなAjaxフォームを使用しています。

<% using (Ajax.BeginForm("CreditCard", "Framed", new { id = Model.SID }, 
    new AjaxOptions() 
    { 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "credit-card-wrapper", 
     LoadingElementId = "loading-pane" 
    }, 
    new { id = "new-creditcard-form" })) 
{ %> 

そして、ドメインBに、私はIFRAMEのSRCを変更するには、外部のイベントを可能にすることによって、私はiframeを管理するためのカスタムjQueryプラグインを使用しています。使用方法は次のようになります

これは、iFrameのsrcをクレジットカードのページに変更します。私はまた、このようなのiframeにonloadイベントを添付しています

$(this).bind('load', function() { 
    var src = $(this).attr('src').toLowerCase(); 

    //do stuff based on url 
}); 

私が何をしたいのかクレジットカードのフォームが送信され、交換が行われたときで、私は、IFRAME内の文書は、IFRAMEのonloadをトリガーにしたいですドメインbが何か起こったことを知るようにする。

もう1つの解決策は、カスタムイベントをiframeに何らかの形でバインドして、枠付きドキュメント内でトリガーすることです。私はそれがうまくいくかどうかわからない。何か案は?

EDIT:

私は親にIFRAMEアップからイベントトリガを使用しようとしていると私はエラーを取得します。

URL http://localhost:27412/Framed/Index/のフレームからURL http://localhost:59905/Home/Framed で フレームにアクセスするための

安全でないJavaScriptの試み。 ドメイン、プロトコル、ポートは に一致する必要があります。ここで

$(document).bind('success:myframe', function (event, referenceId) { 
    //do something 
}); 

を結合私の場合だと、ここでフレームページからjavascriptの呼び出しがあります。これは、私はあなただけの親ウィンドウへのiFrameからのイベントを渡したいと思うajax.beginform

function paymentReceived() { 
    var referenceNumber = $('#referenceNumber').text(); 
    $(top.document).trigger('success:myframe', referenceNumber); 
} 

答えて

3

にONSUCCESSから呼び出されます。私が間違っているなら、私を修正してください。

iFrameから、これを行うことはできませんか?

$(document).ready(function() { 
    parent.alertPageWithIFrameThatLoadIsComplete(); 
}); 

編集: もう一度お試しください。

これは私の作品:

<script type="text/javascript"> 
    function oniframeLoad() { 
    alert("Loaded!"); 
    } 

    function changePage() { 
    frames["my_iframe"].location.href = "http://google.com"; 
    } 

    setTimeout(changePage, 2000); 
</script> 

<iframe onload="oniframeLoad()" name="my_iframe" id="my_iframe" src=""></iframe> 
+0

私はインラインフレーム内から親にトリガーを使用してみましたが、私はURLのhttpでフレームにアクセスするために '安全でないJavaScriptの試みを取得:// localhostを:59905 /ホーム/額縁URL http:// localhost:27412/Framed/Index /のフレームから取得します。ドメイン、プロトコル、ポートは一致しなければなりません。 – Josh

+0

クロスドメインの問題は本当に面倒です。もしあなたが好きなら、それを回避する方法については、「クロスドメインハック」を検索してください。私は別の解決策で答えを更新しました。 –

+0

ajaxを使用しているときにonloadイベントが発生しません。私はonloadイベントを配線しました。私の問題は、特定のカスタムイベントをiframeから親ページに渡すことができるようにすることです。 – Josh

関連する問題