2

動的に追加された Iframe にフォームを追加すると、散発的に IE で Mixed Content Waring メッセージが表示されます (これが主な頭痛の種であるとは限りません)。(基本的に、このロジックを含む 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 自体に form タグを追加したことです。フォームを送信する前に、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 に答える