在动态 iframe 中注入表单时 IE 中的混合内容问题

Posted

技术标签:

【中文标题】在动态 iframe 中注入表单时 IE 中的混合内容问题【英文标题】:Mixed Content Issue in IE while injecting form inside a dynamic iframe 【发布时间】:2013-10-06 09:07:08 【问题描述】:

在将表单添加到动态添加的 Iframe 时,我偶尔会在 IE 中收到混合内容警告消息(并非总是如此,这是最令人头疼的问题)。 (基本上我使用的是 filedownload jquery 插件,其中包含此逻辑 - http://jqueryfiledownload.apphb.com/)。

下面是代码。其中 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;
        

任何洞察建议都会非常有帮助。另外,如果需要其他信息,请告诉我。

【问题讨论】:

【参考方案1】:

最后我们自己找到了解决方案。正如其他帖子中所建议的那样,我们使用了将 iframe src 设置为服务器中的银行 html 文件的想法。我们所做的唯一更改是,我们将表单标签添加到 html 本身。在提交表单之前,我们等待 iframe 加载。希望它可以帮助某人!

动态 iframe 加载代码:

$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();
           );
    

Blank.html 的内容:

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

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

【讨论】:

以上是关于在动态 iframe 中注入表单时 IE 中的混合内容问题的主要内容,如果未能解决你的问题,请参考以下文章

Iframe 中的表单未使用 Jquery 在 IE11 中提交

如何停止在注入时触发加载事件的空 iframe?

用Excel中的vba获取网页内容填写网页表单

IE9 在 iframe 中加载脚本时抛出异常。为啥?

提交表单后的 IE-8 Iframe 页面重定向问题

是否可以在 iframe 表单中覆盖 css 或注入自定义样式? [复制]