动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Ajax教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Ajax教程 ]的信息



本月文章推荐
.Ajax简单客户登陆验证 .
.Ajax实现无刷新树.
.在ASP.NET AJAX中别使用mode="Le.
.asp.net ajax 1.0,hello world程.
.ajax下RegisterClientScriptBloc.
.ajax技术制作得在线歌词搜索功能 .
.AJAX技术 vs 传统的ASP无刷新技术.
.一個Ajax.NET的查詢實例.
.asp.net ajax 和 asp.net 2.0中的.
.Ajax简单示例之改变下拉框动态生.
.用 PHPRPC 实现 Ajax 级联下拉菜.
.ASP.NET AJAX RC Tip:页面中无U.
.ECMAScript基础类以及Asp.net Aj.
.Ajax:拥抱JSON,让XML走开.
.Ajax实现不刷屏的前提下实现页面.
.基于ASP.NET AJAX的WebPart开发与.
.微软Asp.net Ajax 1.0的AutoComp.
.在Ajax 应用程序中实现数据之间交.
.Ajax程序设计入门.
.AJAX联手SOA 新一代Web2.0应用程.

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

发表日期:2006-10-25 |


       第一次写博客,并且斗胆发表技术类文章,请大家不要见笑,有写的失败或雷同的地方请大家扔砖头敲我吧!
       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     case"home":
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

上一篇:在虚拟主机上部署ASP.NET AJAX 1.0 Beta的程序集 人气:6020
下一篇:asp.net ajax 1.0,hello world程序 人气:6954
浏览全部Ajax的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号