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

就像现在一样(根据您的评论),当您真的只想加载新内容时,您正在重新加载整个页面。

为了能够获得您想要的效果,您应该在点击导航链接时使用 ajax(结合 php 和 javascript)只刷新页面的一部分。

您可以做的是(使用 jQuery 轻松介绍 ajax ...):

  • 将您的 php 脚本与 html 分开,以便您可以单独调用它并将其包含在初始 html 中;
  • 将事件处理程序附加到您的导航链接,取消默认操作(撤消单击)并使用 jQuery 的load方法将您的内容替换为新内容(使用正确的参数调用您的 php 脚本)。

由于 javascript 位于主 html 文件中,它只会在初始页面加载或页面刷新时执行您的后台脚本。

于 2012-12-03T17:42:08.413 回答
0

如果您尝试仅通过 JavaScript 进行管理,那么您可以创建一个包含页面访问数组的 Cookie,然后在页面加载时您可以参考该数组来确定用户是否已经访问过该页面。

于 2012-12-03T17:32:13.840 回答