静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

Ajax中的前进、后退功能

作者:大鹏 发布于:2007-5-10 11:18 Thursday 分类:JavaScript与HTML

    这些代码是在ajax中模仿浏览器中的前进后退按扭的效果,并没有真正的对浏览器的前进后退按扭控制。
imitateHistory.js

[codes=js]
//定义一个全局数组
var hashList = new Array();
//定义一个全局变量,用来作为hash的编号
var hashNO = 0;
//初始化数组,将初次装载的页面的hash添加进数组
hashList[0] = window.location.hash.replace('#','');
//将Hash填加到数组
function addHash(newHash)
{    
   //这个判断是检测是否在点击后退按钮后,再点击了新的链接  
   if(hashNO!=(hashList.length - 1))
   {  
       //删除此页标识以后的数组项
   hashList.splice(hashNO+1,(hashList.length-(hashNO+1)));
   }
   hashList[hashList.length] = newHash;
   //指向本页hash的编号
   hashNO = hashList.length - 1;
   //将Hash赋值给浏览器
   makeHistory(newHash);
   //根据浏览器的hash,加载数据
   urlCode();
   checkLinkButton();
}
//将Hash赋值给浏览器
function makeHistory(newHash)
{
   window.location.hash = newHash;
}
//检测导航按钮状态(按钮是否可用)
function checkLinkButton()
{
   if(hashList.length>1)
   {
       if(hashNO>0)
       {
           document.getElementById('Back').disabled='';
       }
       else
       {
           document.getElementById('Back').disabled='disabled';
       }
       if(hashNO<(hashList.length-1))
       {
           document.getElementById('Next').disabled='';
       }
       else
       {
           document.getElementById('Next').disabled='disabled';
       }  
  }
}
//后退按钮onclick事件
function linkBack()
{
   hashNO = hashNO - 1;
   makeHistory(hashList[hashNO]);
   //根据浏览器的hash,加载数据
   urlCode();
   checkLinkButton();
}
//前进按钮onclick事件
function linkNext()
{
   hashNO = hashNO + 1;
   makeHistory(hashList[hashNO]);
   //根据浏览器的hash,加载数据
   urlCode();
   checkLinkButton();
}
//根据浏览器的hash,加载数据
function urlCode()
{
   var TempHash = window.location.hash;
 TempHash = TempHash.replace('#','');
   //下面的"home"、"msgList"只是做个标识,可以自己定义
   //根据浏览器的hash,加载数据
   switch(TempHash)
   {
   case "":
//        alert('调用你的首页');
       break;
   case "home":
//       alert('调用你的首页');
       break;
   }
   //如果是留言本的页码标签
   if (TempHash.substr(0,7)=="msgList")
   {
       var page;
       //取得当前页码
       page = window.location.hash.substr(7,window.location.hash.length);
//        alert('根据页码调用你的留言列表');
   }
   //当然如果是论坛的帖子标签,我想也只是对TempHash这个字符串多玩几个花样而已,具体我就不介绍了。

 imitateAjax(TempHash);
}

[/codes]

测试页面:test.html
[codes=html]



   
   测试
   
   


     
   
   

   

   

     
     
     
     
   
   

   

   



[/codes]


标签: html javascript ajax

et_highlighter
发表评论 »本文目前尚无任何评论

发表评论

干净网络从你做起,切勿黏贴小广告