仅在使用javascript刷新时更改背景

时间:2012-12-03 17:24:39

标签: php javascript refresh background-image

Iam使用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();

但每次加载不同的内容时,脚本都会被执行...... 我不希望这样。我只想在用户刷新页面时更改背景。当用户浏览网站时,不会加载不同的内容。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:0)

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