1

Facebook アプリの最初のページで多くのサーバー コード (PHP) を実行しています。ページを待っている間、ユーザーに読み込み中のアニメーションを見せたくありません。

ページをプリロードする方法 (ajax または単に jQuery を使用) の多くの例をここで見てきましたが、これは異なります。前述のように、ページ自体はサーバー上で生成され、それが進行している間、ユーザーには白のみが表示されます空白ページ。

メインページを別のphpページでラップしようとしました:

<?php
include_once 'functions.php';
session_start();
$_SESSION['fb'] = new fb();

function phponload(){
    echo
        '<script>
            $(function(){
                $("#mwrapper").load("main.php");
            });
        </script>';
}
?>
<html>
<head>
    <script type="text/javascript">
        function delayer(){
        document.write("<?php phponload();?>");
        }
    </script>
    <link href='styles/default.css' rel='stylesheet' type='text/css' />
        <img class='mainload' src='images/loading.gif'></img>
    <script src='//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
    <link rel='stylesheet' type='text/css' href='plugins/clock/clock.css' />
</head>

<body onload='setTimeout("delayer()",1000);'>
    <div id='mwrapper'>

    </div>
</body>

</html>

現在、メインの php ページ (main.php) には次のようなものがあります。

<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<meta name="google-site-verification"         content="Hyqgg60NTPNA7Q9Z5y9TtezUmwhiEomwZLJDt43Ki2g" />
<!--<img class='mainload' src='images/loading.gif'></img>-->
<?php
include_once 'functions.php';
include 'res/views/getTables.php';
define('TXT_QUESTIONS_NUM', 43);
session_start();
{... more PHP code ... }
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js">  </script>
    <script src='scripts/menuItems.js'></script>
    <script src='scripts/main.js'></script>
    <link href='styles/jquery.ui.smooth.theme.css' rel='stylesheet' type='text/css'/>
    <script type="text/javascript" src="plugins/clock/clock.js"></script>
    <link rel="icon" href="images/favicon.ico">
</head>

<div class='container' id='main'>
...
</div>
</body>
</html>

今のところ、コードは GIF をループするだけですが、main.php はロードしません :( ありがとうございます!

4

1 に答える 1

1

Chrome / Firebugコンソールにエラーはありますか?

PHP関数でローダーJSコードを生成する理由はわかりませんが(HTMLに直接配置できます)、そうすることで、document.write関数の引用符の間に複数行のブロックを配置することになり、エラーが発生します。

</script>ただし、問題は、ブラウザが挿入されたものをHTMLタグの終わりとして解釈しているため、後の部分(document.write呼び出しとdelayer関数の終わり)がJavascriptではなくHTMLとして扱われることだと思います。

編集:答えを補完するために、別のページをロードするために使用するコードは次のとおりです。

function delayer(){
    $("#mwrapper").load("main.php", function(){
        $('.mainload').remove();
    });
}

PHP世代は必要ありませんでした。また、load関数の2番目の引数は、読み込みが終了したときに呼び出されるコールバックです。この場合、読み込み中のGIFを削除するために使用しました。

于 2013-01-26T01:27:50.480 に答える