13

「about:blank」で始まり、jqueryによってsrcが供給されるモーダル内にiframeを取得しました。

これはすでに問題なく動作しますが、iframe src が変更されるように設定されている場合、新しいコンテンツをロードしている間、モーダルがまだ古いコンテンツを表示する遅延が常に発生します。

新しいsrcが与えられる前にiframeを即座にクリアするにはどうすればよいですか?

ここにいくつかのコード:

$(function() {
      $('a.modal-k2-<?php echo $this->item->id; ?>').click(function() {
            window.top.$('#modalHolderK2_title').text('<?php echo $author->name . ' - ' . $this->item->title; ?>');
            if (window.top.$('#modalHolderK2_iframe').attr('src') != '<?php echo $itemlink; ?>') {
                window.top.$('#modalHolderK2_iframe').attr('src','about:blank');
                window.top.$('#modalHolderK2_iframe').attr('src','<?php echo $itemlink; ?>');
            }
            window.top.$('#modalHolderK2').modal();
            return false;
      });
    });     

「window.top.$('#modalHolderK2_iframe').attr('src','about:blank);」新しい src が iframe に渡される前に完全には実行されません。

簡単な解決策があると思いますが、まだうまくいくものは見つかりませんでした。

新しいコンテンツが呼び出されたときにモーダルが古いコンテンツを表示するのを避けたいだけです。

4

6 に答える 6

12

$("#iframe").contents().find("body").html('');

于 2013-08-11T06:38:51.570 に答える
10

次のページをロードする前に空白のページをレンダリングする機会を与えるためにiframe、起動時にフレームソースを最終的なURLに更新するタイムアウトを設定することを検討してください。

window.top.$('#modalHolderK2_iframe').attr('src','about:blank');
setTimeout(function() {
    window.top.$('#modalHolderK2_iframe').attr('src','http://www.yoururl.com/');
}, 100);
//....
window.top.$('#modalHolderK2').modal();
于 2012-12-03T17:13:37.977 に答える
2
 $('#iframid').attr('src', '');
于 2014-10-10T06:21:05.947 に答える
0

簡単な修正は、空の iframe のように見える div を作成することです。次に、関数の最初の行に表示し、iframe の onLoad イベントで、div を再度非表示にします。そうすれば、新しいコンテンツをロードしている間に iframe がどのようにレンダリングされるかを扱う必要はまったくありません。

リクエストに応じて、提案されたソリューションの簡単なモックアップ (jQuery 呼び出しを読めると思いますか?)。

<div id="hider" style="display:none"></div>
<iframe id="myIFrame" onload="$('#hider').hide()" />

<script type="text/javascript">
    function updateIframe(newUrl) {
      $('#hider').show();
      $('#myIFrame').attr('src', newUrl);
    }
</script>

CSS を使用して、iframe と完全に重なるように div を配置します。div を表示して iFrame を非表示にすると、iframe の読み込みが完了すると、その onload イベントによって div が再び非表示になり、新しいコンテンツが表示されます。

于 2012-12-03T16:38:22.393 に答える
0

次のページをロードする前に、src を about:blank にリセットするのはどうですか?

var ifr=window.top.$('#modalHolderK2_iframe');
if (ifr.attr('src') != '<?php echo $itemlink; ?>') {
ifr.on('load',function(){
    // need to remove onload
    $(this).off('load');
    this.src='<?php echo $itemlink; ?>';
    window.top.$('#modalHolderK2').modal();
});
ifr.attr('src','about:blank');
}
于 2012-12-03T16:44:33.393 に答える