日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Ajax程序中,自己實現(xiàn)頁面前進(jìn)、后退、與標(biāo)簽功能(asp.net2.0)_AJAX教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:XMLHttpRequest和AJAX入主Web開發(fā)
一、 引言 在XMLHttpRequest對象和AJAX給用戶和開發(fā)者帶給巨大好處的同時,也許還有一些問題你沒 有考慮到-但是的確到了值得引起每個人注意的時候了。 甚至非常討厭的人也都喜歡XMLHttpRequest,因為它提供給程序員真正夢想的功能。也正 是因為有了這樣的新技

Ajax剛?cè)腴T不久,便寫了一個Ajax+C#的留言本程序,在實際寫程序中,漸漸發(fā)現(xiàn)了Ajax程序許多不成熟的地方,其中比較典型的就是頁面的前進(jìn)、后退與標(biāo)簽問題,因為Ajax整個程序是采用無刷新與服務(wù)器進(jìn)行交互,所以導(dǎo)致了大部分瀏覽器的前進(jìn)后退的功能按鈕失效,當(dāng)然標(biāo)簽功能也失去了意義,如果用Ajax開發(fā)一個論壇的話,在堆積如山的帖子中必然有經(jīng)典,但是我們在關(guān)閉瀏覽器后,就得重新從頭開始尋找,這樣實在是太痛苦了,所以為了彌補(bǔ)這個缺點,大家各出奇招,現(xiàn)在我向大家描述一下,在我的程序中,怎樣實現(xiàn)這些功能。

我把實現(xiàn)功能的主要程序代碼寫在imitateHistory.js這個文件中

imitateHistory.js
1 //定義一個全局?jǐn)?shù)組
2 var hashList = new Array();
3 //定義一個全局變量,用來作為hash的編號
4 var hashNO = 0;
5 //初始化數(shù)組,將初次裝載的頁面的hash添加進(jìn)數(shù)組
6 hashList[0] = window.location.hash.replace('#','');
7 //將Hash填加到數(shù)組
8 function addHash(newHash)
9 {
10 //這個判斷是檢測是否在點擊后退按鈕后,再點擊了新的鏈接
11 if(hashNO!=(hashList.length - 1))
12 {
13 //刪除此頁標(biāo)識以后的數(shù)組項
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 //根據(jù)瀏覽器的hash,加載數(shù)據(jù)
22 urlCode();
23 checkLinkButton();
24 }
25 //將Hash賦值給瀏覽器
26 function makeHistory(newHash)
27 {
28 window.location.hash = newHash;
29 }
30 //檢測導(dǎo)航按鈕狀態(tài)(按鈕是否可用)
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 //根據(jù)瀏覽器的hash,加載數(shù)據(jù)
59 urlCode();
60 checkLinkButton();
61 }
62 //前進(jìn)按鈕onclick事件
63 function linkNext()
64 {
65 hashNO = hashNO + 1;
66 makeHistory(hashList[hashNO]);
67 //根據(jù)瀏覽器的hash,加載數(shù)據(jù)
68 urlCode();
69 checkLinkButton();
70 }
71 //根據(jù)瀏覽器的hash,加載數(shù)據(jù)
72 function urlCode()
73 {
74 var TempHash = window.location.hash;
75 //下面的"home"、"msgList"只是做個標(biāo)識,可以自己定義
76 //根據(jù)瀏覽器的hash,加載數(shù)據(jù)
77 switch(TempHash)
78 {
79 case"":
80 alert('調(diào)用你的首頁');
81 break;
82 case"home":
83 alert('調(diào)用你的首頁');
84 break;
85 }
86 //如果是留言本的頁碼標(biāo)簽
87 if (TempHash.substr(1,7)=="msgList")
88 {
89 var page;
90 //取得當(dāng)前頁碼
91 page = window.location.hash.substr(8,window.location.hash.length);
92 alert('根據(jù)頁碼調(diào)用你的留言列表');
93 }
94 //當(dāng)然如果是論壇的帖子標(biāo)簽,我想也只是對TempHash這個字符串多玩幾個花樣而已,具體我就不介紹了。
95 }

以上主要是用到JS數(shù)組的存儲功能,用window.location.hash這個方法來操作瀏覽器的碎片標(biāo)識。
下面是一個測試用的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回調(diào)不同的模塊。
15 function imitateAjax(mode)
16 {
17 switch(mode)
18 {
19 case "home":
20 document.getElementById('divAjax').innerHTML="你現(xiàn)在調(diào)用的是首頁模塊";
21 break;
22 case "news":
23 document.getElementById('divAjax').innerHTML="你現(xiàn)在調(diào)用的是新聞模塊";
24 break;
25 case "photo":
26 document.getElementById('divAjax').innerHTML="你現(xiàn)在調(diào)用的是圖片模塊";
27 break;
28 case "music":
29 document.getElementById('divAjax').innerHTML="你現(xiàn)在調(diào)用的音樂是模塊";
30 break;
31 case "msgList1":
32 document.getElementById('divAjax').innerHTML="你現(xiàn)在調(diào)用的是留言列表的第 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="你現(xiàn)在調(diào)用的是留言列表的第 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="你現(xiàn)在調(diào)用的是留言列表的第 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>

 

分享:如何根據(jù)郵編自動完成地址信息
采用一個開源的AJAX庫:Ajax Toybox 描述: 在注冊或購物車結(jié)帳的時候,需要用戶填入個人資料,這個環(huán)節(jié)可以簡練一下,我們只需客人填入郵政編碼,然后就根據(jù)這個郵政編碼,自動從數(shù)據(jù)庫中取出相應(yīng)的省,市等地址信息。這樣既可以減少客戶的輸入,增加客戶體

來源:模板無憂//所屬分類:AJAX教程/更新時間:2010-04-05
相關(guān)AJAX教程