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

尝试使用 a setTimeout,以便它等待 x 秒以加载 iframe,如果它在分配的时间内没有加载,它仍然会提交。

试试这个功能:

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 秒,则无论如何都会提交表单。

您可能需要添加更多逻辑以防止提交发生两次。

于 2012-05-22T20:09:56.703 回答