在动态 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 中的混合内容问题的主要内容,如果未能解决你的问题,请参考以下文章