2

在将表单添加到动态添加的 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;
        }

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

4

1 回答 1

2

最后我们自己找到了解决方案。正如其他帖子中所建议的那样,我们使用了将 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>
于 2013-10-03T10:56:42.140 回答