结合AJAX的PHP开发之后退、前进和刷新(3)

2016-01-29 13:27 2 1 收藏

结合AJAX的PHP开发之后退、前进和刷新(3),结合AJAX的PHP开发之后退、前进和刷新(3)

【 tulaoshi.com - PHP 】

 测试类

  可以用简单的 HTML 页面和一些 Javascript 来测试完成的类。测试页面将在上方显示历史记录按钮,只有活动的按钮是突出显示并且可以单击的。我们没有建立复杂的测试应用程序,该页面在每次单击链接时仅仅生成随机数。这些数字就是记录到历史堆栈中的事件。堆栈也在页面上显示,指针标记的当前记录用粗体显示。

  清单 7. 测试历史堆栈的简单 HTML 页面

<html>
<head>
<title></title>
</head>

<body>

<div id="historybuttons"></div>
<div>
<a href="#" onclick="do_add(); return false;">Add Random
Resource</a>
</div>
<div id="output" style="margin-top:40px;"></div>

</body>
</html>
  在该 HTML 页面的头部需要添加清单 8 所示的 Javascript 代码。这段代码首先实例化一个新的历史堆栈对象,并载入可能已经保存到浏览器 cookie 中的所有数据。

  我们定义了四个 do_*() 函数,这些事件处理程序将添加到后退、前进和刷新按钮的链接中,此外还有 Add Random Resource 链接,如清单 7 所示。

  display() 函数检查历史记录对象的当前状态,并为历史记录按钮生成 HTML。它还生成历史记录中存储的项目列表。

  清单 8. 集成历史记录类和测试页面的 Javascript

<script type="text/javascript" src="http://img.jcwcn.com/attachment/portal"></script>
<script type="text/javascript">

var myHistory = new HistoryStack();
myHistory.load();

function do_add()
{
 var num = Math.round(Math.random() * 1000);
 myHistory.addResource(num);
 display();
 return false;
}

function do_back()
{
 myHistory.go(-1);
 display();
}

function do_forward()
{
 myHistory.go(1);
 display();
}

function do_reload()
{
 myHistory.go(0);
}

function display()
{
 // Display history buttons
 var str = '';
 if (myHistory.hasPrev()) {
  str += '<a href="#" onclick="do_back(); return false;">'
+ '<img src="http://img.jcwcn.com/attachment/portal" alt="Back"
/></a> ';
 } else {
  str += '<img src="http://img.jcwcn.com/attachment/portal" alt="" /> ';
 }
 if (myHistory.hasNext()) {
  str += '<a href="#" onclick="do_forward(); return false;">'
+ '<img src="http://img.jcwcn.com/attachment/portal" alt="Forward" />'
+ '</a> ';
 } else {
  str += '<img src="http://img.jcwcn.com/attachment/portal" alt="" /> ';
 }
 str += '<a href="#" onclick="do_reload(); return false;">'
+ '<img src="http://img.jcwcn.com/attachment/portal" alt="Reload"
/></a>';
 document.getElementById("historybuttons").innerHTML = str;

 // Display the current history stack, highlighting the current
 // position.
 var str = '<div>History:</div>';
 for (i=0; i < myHistory.stack.length; i++) {
  if (i == myHistory.current) {
   str += '<div><b>' + myHistory.stack[i] +
'</b></div>';
  } else {
   str += '<div>' + myHistory.stack[i] + '</div>';
  }
 }
 document.getElementById("output").innerHTML = str;
}

window.onload = function () {
 display();
};
</script>
  运行该测试页面,可以看到历史记录按钮反映了历史堆栈的状态(见图 2)。比如,第一次加载页面时,按钮都是灰色的。向堆栈中添加一些记录后,后退按钮就变成活动的了。如果在堆栈中回退,前进按钮就变亮了。还要注意的是,如果单击几次后退然后再单击 Add,那么堆栈会被截掉一部分,新的事件 被压入缩短的堆栈顶部。


图 2. 历史堆栈的测试页面
  测试完该类后,就可以进入最激动人心的阶段了。

  集成历史记录对象和相册

  我们将从第 1 部分留下的问题开始,直接从相册页面调用历史堆栈。不需要修改任何

来源:https://www.tulaoshi.com/n/20160129/1490203.html

延伸阅读
标签: Web开发
在做这个BLOG的过程中无时无刻被这个问题困扰着。。。。 想来想去大应该大致上有三种方法吧: 1、每次客户端在进行同服务器的交互的时候都必须改变URL的值,这样子的话就会让IE记录下了页面的历史状态,从而可以利用IE的前进后退来实现在,这样子应该是用户最能接受的方式吧,因为大家也都习惯的用浏览器的前进、后退功能了。...
       Ajax刚入门不久,便写了一个Ajax+C#的留言本程序,在实际写程序中,渐渐发现了Ajax程序许多不成熟的地方,其中比较典型的就是页面的前进、后退与标签问题,因为Ajax整个程序是采用无刷新与服务器进行交互,所以导致了大部分浏览器的前进后退的功能按钮失效,当然标签功能也失去了意义,如果用Ajax开...
标签: Web开发
?php Header("Content-Type:text/html; charset=utf-8"); function AjaxPage($Total,$ListNub,$CurrentPage,$Url,$AjaxAction,$HalfPer='',$ViewId='') { //计算总页数 $totalPage = @ceil($Total/$ListNub); $total=$totalPage-1; $re=""; //echo $CurrentPage; $re .= ( $CurrentPage&nbs...
标签: Web开发
AJAX 客户端页面代码: index.html 代码如下: html body h1Ajax file upload sample/h1br/input id="uplaod" name="btn_send" type="button" value="上传测试"/ div id=result/div PRE class=js name="code"SCRIPT LANGUAGE=JavaScript // 上传函数 function btn_send.onclick() { data = "" spliter = "-------7d8d733180846" data...
标签: Web开发
大家都有在网站发表评论的经历,传统的发表过程无非是:发表-提交页面表单-等待刷新页面,这样在网络比较拥挤的时候,往往需要漫长的等待,今天介绍用PHP+Ajax实现页面无刷新发表评论,希望对初学ajax的PHPer有所帮助。   那么首先,我们需要一个基本的ajax开发框架,文件ajax.js就包含了这个框架,代码如下: 代码如下: va...

经验教程

271

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部