7

ページの読み込みがかなり遅くなるいくつかのiFrameを含むPHPページがあります。ページが完全に読み込まれた後にのみこれらのiFrameを読み込むにはどうすればよいですか?JavaScriptを使用する必要があると思いますが、機能するコードはまだ見つかりません。

どうもありがとう。

編集-iFrameはPHPエコー内に表示される必要があります。

コードは次のとおりです。

<?php
            while($i = mysql_fetch_array($e))
            {
        ?>

    <div class='dhtmlgoodies_question'>
        <div style='float:left'><img src='../images/categories/<?=$i[Category]?>.png'></div>
        <div class='name'><?=$i[Name]?></div>
        <div class='location'><?=$i[Area]?></div>
    </div>

    <div class='dhtmlgoodies_answer'>
    <div>

        <div style='background-color:#FFF; margin-left:248px; padding:10px; color:#666'>
        <?=$i[Address]?><br>
        <?=$i[Area]?><br>
        <a href='http://maps.google.com/maps?q=<?=$i[Postcode]?>'><?=$i[Postcode]?></a><
        <p>
        <?=$i[ContactName]?><br>
        <?=$i[TelephoneNumber]?>
        </div>
        <p>
        <a href='http://crbase.phil-howell.com/view.php?Employer=<?=$i[Employer]?>'>
        Edit this entry
        </a>
        <br>

    //HERE IS WHERE I WANT TO LOAD THE iFRAME


    </p>
        </div>

    </div>
</div>
        <?php
            }
        ?>
4

3 に答える 3

13

@Sudhir と @Richard が示したように、iframeコンテンツのロードを延期することでこの問題を解決できます。数行の JavaScript 行が必要です。

iframeただし、実行時に要素を作成するよりも、要素をソース コードに配置した方が便利な場合もあります。最初にiframe要素を作成しabout:blank、実行時にそのソースを変更すること で、それを実現することもできます。

<html>
<head>
<script>
    function loadDeferredIframe() {
        // this function will load the Google homepage into the iframe
        var iframe = document.getElementById("my-deferred-iframe");
        iframe.src = "./" // here goes your url
    };
    window.onload = loadDeferredIframe;
</script>
</head>    
<body>
    <p>some content</p>

    <!-- the following iframe will be rendered with no content -->
    <iframe id="my-deferred-iframe" src="about:blank" />

    <p>some content</p>
</body>
</html>

@PhilHowell 向けに編集: アイデアがより明確になったことを願っています。

于 2012-04-30T10:07:55.833 に答える
7

あなたの体の最後に追加してみてください:


window.onload = function() {
    var iframe = document.createElement('iframe');
    iframe.style.display = "none";
    iframe.src = your_iframe_source_url;
    document.body.appendChild(iframe);
};
于 2012-04-30T08:53:15.557 に答える
3

必要に応じて、ページが次のようにロードされたら、iframe をロードできます。

ここでは簡単にするために jquery を使用しました。

$(function() {

   $('<iframe />').attr('src', 'http://www.google.com').appendTo('#yourelementId'); 

});

ここでもっと見る:

http://jquery-howto.blogspot.co.uk/2010/02/dynamically-create-iframe-with-jquery.html

JS iframe ローダー

したがって、PHP Echo の場合:

<?php

  echo "<div id='yourelementId'></div><script>$(function() { $('<iframe />').attr('src', 'http://www.google.com').appendTo('#yourelementId');});</script>"; 

?>

ああ、jQuery がリンクされていることを確認するか、Sudhir が提供したコードを使用してください。

于 2012-04-30T08:54:06.270 に答える