| 加入收藏| 设为首页| 联系我们

首页 站长学习 站长之家 源码下载 建站素材 书籍教程 常用工具
 您现在的位置: 动力中国 >> 网络编程 >> Ajax教程 >> 文章正文  
 Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)
 

Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)

http://www.domcn.org  文章来源:本站收藏  点击数:

  关键字:Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)

       第一次写博客,并且斗胆发表技术类文章,请大家不要见笑,有写的失败或雷同的地方请大家扔砖头敲我吧!
       Ajax刚入门不久,便写了一个Ajax+C#的留言本程序,在实际写程序中,渐渐发现了Ajax程序许多不成熟的地方,其中比较典型的就是页面的前进、后退与标签问题,因为Ajax整个程序是采用无刷新与服务器进行交互,所以导致了大部分浏览器的前进后退的功能按钮失效,当然标签功能也失去了意义,如果用Ajax开发一个论坛的话,在堆积如山的帖子中必然有经典,但是我们在关闭浏览器后,就得重新从头开始寻找,这样实在是太痛苦了,所以为了弥补这个缺点,大家各出奇招,现在我向大家描述一下,在我的程序中,怎样实现这些功能。

      我把实现功能的主要程序代码写在imitateHistory.js这个文件中

imitateHistory.js
 1 //定义一个全局数组
 2 var hashList = new Array();
 3 //定义一个全局变量,用来作为hash的编号
 4 var hashNO = 0;
 5 //初始化数组,将初次装载的页面的hash添加进数组
 6 hashList[0] = window.location.hash.replace(#,);
 7 //将Hash填加到数组
 8 function addHash(newHash)
 9 {   
10     //这个判断是检测是否在点击后退按钮后,再点击了新的链接 
11     if(hashNO!=(hashList.length - 1))
12     { 
13         //删除此页标识以后的数组项
14     hashList.splice(hashNO+1,(hashList.length-(hashNO+1)));
15     }
16     hashList[hashList.length] = newHash;
17     //指向本页hash的编号
18     hashNO = hashList.length - 1;
19     //将Hash赋值给浏览器
20     makeHistory(newHash);
21     //根据浏览器的hash,加载数据
22     urlCode();
23     checkLinkButton();
24 }
25 //将Hash赋值给浏览器
26 function makeHistory(newHash)
27 {
28     window.location.hash = newHash;
29 }
30 //检测导航按钮状态(按钮是否可用)
31 function checkLinkButton()
32 {
33     if(hashList.length>1)
34     {
35         if(hashNO>0)
36         {
37             document.getElementById(Back).disabled=;
38         }
39         else
40         {
41             document.getElementById(Back).disabled=disabled;
42         }
43         if(hashNO<(hashList.length-1))
44         {
45             document.getElementById(Next).disabled=;
46         }
47         else
48         {
49             document.getElementById(Next).disabled=disabled;
50         }  
51    }
52 }
53 //后退按钮onclick事件
54 function linkBack()
55 {
56     hashNO = hashNO - 1;
57     makeHistory(hashList[hashNO]);
58     //根据浏览器的hash,加载数据
59     urlCode();
60     checkLinkButton();
61 }
62 //前进按钮onclick事件
63 function linkNext()
64 {
65     hashNO = hashNO + 1;
66     makeHistory(hashList[hashNO]);
67     //根据浏览器的hash,加载数据
68     urlCode();
69     checkLinkButton();
70 }
71 //根据浏览器的hash,加载数据
72 function urlCode()
73 {
74     var TempHash = window.location.hash;
75     //下面的home、msgList只是做个标识,可以自己定义
76     //根据浏览器的hash,加载数据
77     switch(TempHash)
78     {
79     case:
80         alert(调用你的首页);
81         break;
82     casehome:
83         alert(调用你的首页);
84         break;
85     }
86     //如果是留言本的页码标签
87     if (TempHash.substr(1,7)==msgList)
88     {
89         var page;
90         //取得当前页码
91         page = window.location.hash.substr(8,window.location.hash.length);
92         alert(根据页码调用你的留言列表);
93     }
94     //当然如果是论坛的帖子标签,我想也只是对TempHash这个字符串多玩几个花样而已,具体我就不介绍了。
95 }

以上主要是用到JS数组的存储功能,用window.location.hash这个方法来操作浏览器的碎片标识。
下面是一个测试用的HTML文件,向大家描述一下具体的使用方法。
文件名test.html

test.html
 1 <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
 2 <html xmlns=http://www.w3.org/1999/xhtml >
 3 <head>
 4     <meta http-equiv=Content-Type content=text/html; charset=GB2312 />
 5     <title>测试</title>
 6     <script language=javascript src=imitateHistory.js type=text/javascript></script>
 7     <script language=javascript type=text/javascript>
 8     <!--
 9     //页面装载完后,通过浏览器的Hash初始化你的Ajax程序。
10     function window.onload()
11     {
12         urlCode();
13     }
14     //我用下面这个方法来模拟AJAX回调不同的模块。
15     function imitateAjax(mode)
16     {
17         switch(mode)
18         {
19             case home:
20                 document.getElementById(divAjax).innerHTML=你现在调用的是首页模块;
21                 break;
22             case news:
23                 document.getElementById(divAjax).innerHTML=你现在调用的是新闻模块;
24                 break;
25             case photo:
26                 document.getElementById(divAjax).innerHTML=你现在调用的是图片模块;
27                 break;
28             case music:
29                 document.getElementById(divAjax).innerHTML=你现在调用的音乐是模块;
30                 break;
31             case msgList1:
32                 document.getElementById(divAjax).innerHTML=你现在调用的是留言列表的第 1 页<br /><br /><span>上一页
33
34 </span>&nbsp;&nbsp;&nbsp;&nbsp;<span style=cursor:hand; onclick=addHash(msgList2)>下一页</span>;
35                 break;
36             case msgList2:
37                 document.getElementById(divAjax).innerHTML=你现在调用的是留言列表的第 2 页<br /><br /><span
38
39 style=cursor:hand; onclick=addHash(msgList1)>上一页</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style=cursor:hand;
40
41 onclick=addHash(msgList3)>下一页</span>;
42                 break;
43             case msgList3:
44                 document.getElementById(divAjax).innerHTML=你现在调用的是留言列表的第 3 页<br /><br /><span
45
46 style=cursor:hand; onclick=addHash(msgList2)>上一页</span>&nbsp;&nbsp;&nbsp;&nbsp;<span>下一页</span>;
47                 break;
48          }
49     }
50     -->
51     </script>
52 </head>
53 <body>
54     <input id=Back onclick=linkBack(); type=button disabled=disabled value=← />&nbsp;&nbsp;
55     <input id=Next onclick=linkNext(); type=button disabled=disabled value=→ />
56     <br />
57     <br />
58     <br />
59     <input onclick=addHash(home); type=button value=首页 />&nbsp;&nbsp;
60     <input onclick=addHash(news); type=button value=新闻 />&nbsp;&nbsp;
61     <input onclick=addHash(photo); type=button value=图片 />&nbsp;&nbsp;
62     <input onclick=addHash(music); type=button value=音乐 />&nbsp;&nbsp;
63     <input onclick=addHash(msgList1); type=button value=留言 />
64     <br />
65     <br />
66     <div id=divAjax style=background-color:#CCCCCC; height:100px;></div>
67 </body>
68 </html>

文章就写到这里了,小弟我是菜鸟,望各位大哥多多指教,如果有看不明白的地方就请大家给我留言吧!
http://www.cnblogs.com/aiqingayu/archive/2006/10/24/538653.html


Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)
  • 上一篇文章:

  • 下一篇文章:
  •  热门文章
    普通文章 电子邮件改头换面 四公司畅谈未
    普通文章 PC病毒史上最声名狼藉的八大病
    普通文章 Rails系统中的AJAX开发技术简析
    普通文章 基于ASP.NET AJAX框架实现表单
    普通文章 开发ASP.NET AJAX客户端定制行
    普通文章 用JFreeChart对JSP报表进行增强
    普通文章 SQL Server 2005上的CLR和ADO.
    普通文章 SQL Server 2005的XML支持机制
    普通文章 Firefox中标签式浏览技巧大全
    普通文章 Tomcat中的Session和Cookie大揭
     
     推荐文章
    推荐文章 把Google地图嵌入网页 就是这么
    推荐文章 迅雷搜索候选资源出错的解决
    推荐文章 轻松去除迅雷里的各种广告和资
    推荐文章 突破限制 免费领养到QQ空间五级
    推荐文章 Rational统一过程RUP贴近中小软
    推荐文章 构建自己的轻量级XML DOM分析程
    推荐文章 WPS Office 2007技巧:妙用配置
    推荐文章 Excel 2007:求余数函数实用进阶
    推荐文章 浅谈ASP.NET的Postback
    推荐文章 软件开发中项目需求管理简述
     
     相关文章
    没有相关文章
    设为首页 | 加入收藏 | 广告合作 | 联系站长 | 版权申明 |
    动力中国为网友提供免费学习资料,可用资源,如果您认为我们的相关内容侵害到了您的权利请联系管理员
    Copyright © 2006-2008 domcn.org All Rights Reserved.