0

次のようなドキュメントがあります。

<iframe source="http://example.com/" style="width:100%; height:100%"></iframe>
<form action="//example.com/foo" method="post">
  <input type="hidden" name="foo" value="bar">
</form>
<script>
$(function(){
  $('form').submit();
});
</script>

概念は、フォームの送信中に iframe のコンテンツをインタースティシャル ステップとして表示することです。

問題は、フォームの送信時にブラウザが iframe ソースへのリクエストを中止するため、フォームの送信に時間がかかっても iframe が空白のままになることです。

フォームの送信を 50 ミリ秒で延期することでうまくいくことがわかりましたが、ハッキーな感じがします。

ロードされない理由と、それをオーバーライドする適切な方法は何ですか?

4

1 に答える 1

2

iframe が読み込まれるまで待ちたい場合は、次を使用します。

<script>
$(function(){
    $('iframe').on('load', function() {
        $('form').submit();
    });
});
</script>

別の方法として、iframe の読み込みを妨げないようにフォームを非同期に投稿することもできますが、その場合は Javascript でサーバーの応答を処理する必要があります。そのために、次のスレッドが役に立つかもしれません: jQuery - Send a form asynchronously

于 2013-10-15T02:18:13.840 に答える