1

次のコードがあります。

  function callIframe(type, cat) {
    var send = false;
    var axel = Math.random() + "";
    var a = axel * 10000000000000;
    var iframe = $('<iframe src="http://domain.com/;src=12345678;type=' + type + ';cat=' + cat + ';ord=' + a + '?" width="1" height="1" frameborder="0" ><iframe>');    
    $('body').append(iframe);   
  }          

と:

$("a").click(function(e){  
  var $form = $(this).parent();
  callIframe("signu903", "hptes318");  
  $form.get(0).submit();  
});           

私の問題は、iframe のコンテンツが完全に読み込まれる前にフォームが送信されることです。コールバックがこの問題に対処することはわかっていますが、フォームを送信するために iframe の読み込みに依存しています。この場合、私はただ探しているか、ベストプラクティスです。

注: iframe コードにはアクセスできません。

前もって感謝します、

JN

4

1 に答える 1

1

を使用してsetTimeout、iframeが読み込まれるまでx秒待機し、割り当てられた時間内に読み込まれない場合は、とにかく送信してみてください。

この関数を試してください:

function callIframe(type, cat) {
    var send = false;
    var axel = Math.random() + "";
    var a = axel * 10000000000000;
    var iframe = $('<iframe src="http://domain.com/;src=12345678;type=' + type + ';cat=' + cat + ';ord=' + a + '?" width="1" height="1" frameborder="0" ><iframe>');
    $('body').append(iframe);
    return iframe;
}​

そしてこのコード

$("a").click(function(e) {
    var $form = $(this).parent();
    var iframe = callIframe("signu903", "hptes318");
    iframe.load($form.get(0).submit);
    setTimeout($form.get(0).submit,5000);
});​

iframeの読み込みに5秒以上かかる場合でも、フォームは送信されます。

送信が2回発生しないように、ロジックを追加する必要がある場合があります。

于 2012-05-22T20:09:56.703 に答える