如何在将页面加载到div时恢复浏览器标准功能

时间:2012-07-07 21:17:18

标签: php javascript jquery html

问题是我的网站只包含一个页面,其中包含一个侧面菜单和一个div,而所有其他页面都加载在其中,问题是所有浏览器的诽谤功能(后退,刷新,书签)都消失了。所以我的问题是有一种方法可以在将页面加载到div时恢复浏览器功能,或者我应该使用另一种方式在主页面中加载页面?。

主页:

<div id="nav" class="mmenu">
            <ul id="nav_ul" class="float_left">
                <li><a class="upper" id="1" target="collabsoft" href= "profilePage.php?property_variable=mine">My Profile</a></li>
                <li><a id="2" class="menu-message"
                       href= "viewMessages.php">Messages<label id="num_msg">(<?php echo $count; ?>)</label></a></li>
                <li><a id="3" class="menu-conference"  target="collabsoft" href= "userHomepage.php">My Conferences</a></li>
                <li><a id="4" class="menu-conference2"  target="collabsoft" href= "availableConferences2.php">Conferences</a></li>
                <li><a id="5" class="menu-request"
                       href= "incomingRequests.php">Requests<label id="num_requests">(<?php echo $total ?>)</label></a></li>
                <li><a id="6" class="menu-news"
                       target="collabsoft" href= "viewNews.php" >News</a></li>
                <li><a class="lower" id="7" target="collabsoft" href= "generalOptions.php" >Options</a></li>
            </ul>
        </div>
        <table id="collabsoft_table" class="no_border">
            <tr>
                <td id="collabsoft_td" class="no_border">
                    <div scrolling="no" id="collabsoft" name="collabsoft" class="collabsoft"></div>
                </td>
            </tr>
        </table>
        <br/>
    </div>

1 个答案:

答案 0 :(得分:1)

您需要为不同的资源使用不同的URL,否则浏览器将不会保留/更新其历史记录,并且服务器将提供相同的页面。

  • 您应该使用哈希链接(URL中“#”字符后面的部分)
  • 另一种选择是使用HTML5的历史API,可以用来“推送”虚假的网址

让我们关注第一个选项(哈希URL),主要是因为浏览器支持。

此外,您没有指定是否使用任何JavaScript框架,我将假设您正在使用jQuery(因为它的受欢迎程度)。

查看jQuery History

让我解释它是如何运作的:

创建链接时,不要绑定到“click”事件,而是给它一个哈希字符串,例如:

<a href="#about" title="About me">About</a>

单击链接后,浏览器将不会重新加载页面。

然后,使用jQuery History插件绑定到该历史记录更改,例如:

$.History.bind('/about',function(state){
    // Load resource using AJAX, update the "main" div, etc.
});