记住页面内容

时间:2013-05-25 03:04:22

标签: php javascript html

一些动态网页在离开页面后会以某种方式记住其所有动态内容,当您在浏览器上按下按钮时,旧页面看起来就像您离开时一样(包括动态内容),有些甚至还记得您的页面的哪个部分在离开之前以及在将卷轴准确地移动到您正在查看的页面的一部分之后进行聚焦。

我有一个动态页面,其内容随着ajax调用而改变,我想让用户离开并返回页面时可以看到它与离开之前完全一样。

赞赏任何有用的想法

2 个答案:

答案 0 :(得分:0)

我认为如果您导航远离它,某些浏览器会缓存该页面一段时间。当您单击“返回”返回页面时,它会在不调用服务器的情况下显示其先前状态的页面。然而,不太可靠。 您可以将函数绑定到beforeunload事件并将状态设置保存到cookie。像参数一样,形成inpurts,甚至滚动位置。然后,当用户返回页面时,请检查cookie以查找这些设置,并将页面设置为原样。

答案 1 :(得分:0)

返回用户可以通过SESSION(假设它尚未过期)和数据库存储数据。根据您计划保存的数据量,您可能只需要SESSION(我认为存在性能问题,您可以/应该在SESSION中存储的数量限制?)

这是我过去所做的一个粗略的例子。 (通过jQuery + REST + JSON + PHP)。如果您找到该用户的数据,请将其返回并相应填充。

<script>

function PopulateDOMElementsWithUD(user){ /* Do stuff on the DOM with User Data */ }

function CheckForUserData(){ 

   jQuery.getJSON('/user/getActiveData', function(user){ 

     //Data was found, use it
     if(typeof(user) == 'object' && typeof(user.id) != 'undefined' && parseInt(user.id) > 0){ 
        PopulateDOMElementsWithUD(user); 
     };

   }); 
} 

$(document).ready(function(){ 

  CheckForUserData(); 

}); 
</script>

使用PHP等语言,您可以检查用户的会话数据,然后从数据库中获取其余数据:

<?php 
/* 
 * Assuming you already have some sort of handler for incoming XMLHTTPREQUESTs, 
 * and how that gets mapped to a method, moving along... 
 */
function getActiveData(){ 

    session_start(); 

    $user = array('id' => 0); 

    //assumes you only store the user's uid in the session
    if(isset($_SESSION['uid'])){

        /*
         * Look up the user from the database based on uid stored in the session
         * This assumes that getUserDataById() also would return 
         * the default $user value (array('id' => 0)) if no user by that id is found 
         * in the database.         
         * I've also done something similar with try...catch and throw an exception 
         * if the user doesn't exist.
         */ 

        $user = getUserDataById(intval($_SESSION['uid']));

    }

    //There are plenty of frameworks out there that handle this stuff much more elegantly, but for sake of example, this would work. 
    print serialize($user); 
    die();

}

希望有所帮助!