0

次のように、PHP を使用してページを動的にロードしています。

<div id="content">
<div id="fadein">   


<?php
    /// load page content
    $pages_dir = 'content';

    if(!empty($_GET['p'])) {

        $pages = scandir($pages_dir, 0);
        //delete . and ..
        unset($pages[0], $pages[1]);

        $p = $_GET['p'];

        // only files that are in the array can be loaded
        if (in_array($p. '.php', $pages)) {
            include($pages_dir. '/'.$p. '.php');    

        } else {
            echo 'Helaas deze pagina bestaat niet';
        }
    } else {
        include($pages_dir. '/index.php');
    }

?>  


</div>
</div>

私のサイトの上部にあるナビゲーションを使用すると、PHP が関連するコンテンツを読み込みます。

そして、ページの下部にあるこのスクリプトを使用して、背景画像を変更します。

 function preload(arrayOfImages) {
    $(arrayOfImages).each(function(){
        $('<img/>')[0].src = this;
        // Alternatively you could use:
        // (new Image()).src = this;
    });
}

// Usage:
preload([
    '../public/background/test2/1.jpg',
    '../public/background/test2/2.jpg',
    '../public/background/test2/3.jpg',
    '../public/background/test2/4.jpg',
    '../public/background/test2/5.jpg',
    '../public/background/test2/6.jpg'

]);

var totalCount = 6;
function changeBackground()
{
    var num = Math.ceil( Math.random() * totalCount );
    backgroundUrl = '../public/background/test2/'+num+'.jpg';

    $('body').css('background-image', 'url('  +backgroundUrl+  ')');
}

changeBackground();

しかし、異なるコンテンツが読み込まれるたびに、スクリプトが実行されます...それは望ましくありません。ユーザーがページを更新したときにのみ背景を変更したい。ユーザーがサイトをナビゲートしているときに別のコンテンツが読み込まれるときではありません。

4

2 に答える 2

1

(コメントに基づいて)現在のように、本当に新しいコンテンツのみをロードしたい場合は、ページ全体をリロードしています。

必要な効果を得るには、(php と JavaScript を組み合わせた) ajax を使用して、ナビゲーション リンクをクリックしたときにページの一部だけを更新する必要があります。

あなたができることは(ajaxを簡単に紹介するためにjQueryを使用しています...):

  • php スクリプトを html から分離して、個別に呼び出して最初の html に含めることができるようにします。
  • ナビゲーション リンクにイベント ハンドラーをアタッチし、デフォルト アクションをキャンセル (クリックを元に戻す) し、jQuery のloadメソッドを使用してコンテンツを新しいコンテンツに置き換えます (正しいパラメーターで php スクリプトを呼び出します)。

JavaScript はメインの html ファイルにあるため、最初のページの読み込み時またはページの更新時にのみバックグラウンド スクリプトが実行されます。

于 2012-12-03T17:42:08.413 に答える
0

JavaScript だけでこれを管理しようとしている場合は、ページ訪問の配列を含む Cookie を作成できます。ページの読み込み時に、その配列を参照して、ユーザーがそのページを既に訪問したかどうかを判断できます。

于 2012-12-03T17:32:13.840 に答える