2013-09-30 101 views
2

在向動態添加的iframe中添加表單時,我偶爾在IE中收到混合內容Waring消息(並非總是如此,這是主要頭痛)。 (基本上我使用的是下載的jquery插件,它包含這個邏輯 - http://jqueryfiledownload.apphb.com/)。在IE中混合內容問題,同時在動態iframe中注入表格

以下是代碼。其中fileUrl是到同一站點中的頁面的https鏈接。 HttpMethod是POST。

當我在調試時複製問題時,發現警告發生在formDoc.write行。

$iframe = $("<iframe style='display: none' src=\"javascript:''\"></iframe>").appendTo("body"); 
formDoc.write("<html><head></head><body><form method='" + settings.httpMethod + "' action='" + fileUrl + "'>" + formInnerHtml + "</form>" + settings.popupWindowTitle + "</body></html>"); 
$form = $(formDoc).find('form'); 
$form.submit(); 


function getiframeDocument($iframe) { 
      var iframeDoc = $iframe[0].contentWindow || $iframe[0].contentDocument; 
      if (iframeDoc.document) { 
       iframeDoc = iframeDoc.document; 
      } 
      return iframeDoc; 
     } 

任何洞察力的建議將是非常有用的。另外,讓我知道是否需要額外的信息。

回答

2

最後我們自己找到了解決方案。正如其他文章中所建議的,我們使用將iframe src設置爲服務器中的銀行html文件的想法。只有改變我們所做的是,我們將表單標籤添加到html本身。在提交表單之前,我們等待加載iframe。希望它能幫助別人!

動態加載的iFrame代碼:Blank.html的

$iframe = $("<iframe id='iframeID' style='display: none' src='download.htm'></iframe>").appendTo("body"); 
      $iframe.load(function() { 
       var form = $('#iframeID').contents().find('form') 
       var formInnerHtml = '<input type="hidden" name="filename" value="testfile.txt" />'; 

      form.html(formInnerHtml); 
       form.submit(); 
      }); 
    } 

內容:

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <form method="post" action="ActualDownloadPage.aspx"> 

     </form> 
    </body> 
</html>