国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AJAX 網(wǎng)頁保留瀏覽器前進(jìn)后退等功能

2019-11-20 23:56:45
字體:
供稿:網(wǎng)友
在一些AJAX被大量使用的頁面,有時(shí)都不太敢刷新,因?yàn)樗⑿乱院罂赡芸吹降氖呛驮瓉碛泻艽蟛煌捻撁妗翰挥懻撛谀承╉撁鎯?nèi)容大量更新的情況下是否該使用AJAX的問題,本文簡單說一下保留瀏覽器前進(jìn)、后退、刷新等功能。
這里假設(shè)一個(gè)有兩個(gè)Tabs的頁面,每個(gè)Tab中含有大量文字,可能還有圖片。如果現(xiàn)在覺得Tab2的內(nèi)容很好,把它加入收藏夾或發(fā)送給朋友。下次通過收藏夾打開或者朋友點(diǎn)開這個(gè)鏈接的時(shí)候很有可能看到的是Tab1的內(nèi)容,然后需要鼠標(biāo)再次點(diǎn)擊Tab2才看到想要看的內(nèi)容。如果頁面邏輯更為復(fù)雜,則可能要進(jìn)行多步操作才能回到希望看的內(nèi)容,這樣的體驗(yàn)不太好。
要使刷新、加入收藏夾等功能正常使用,需要讓當(dāng)前的操作在URI上有所體現(xiàn)。但是改變URI的同時(shí)又不能引起頁面的刷新,因此可以通過改變URI中的片段(fragment)來實(shí)現(xiàn)。例如,點(diǎn)擊Tab1后將URI改為http://www.example.com/example.html#tab1,點(diǎn)擊Tab2則將URI改為http://www.example.com/example.html#tab2。
復(fù)制代碼 代碼如下:

function ShowTab1() {
$("#tab2").hide();
$("#tab1").show();
window.location.hash = "#tab1";
};
function ShowTab2() {
$("#tab1").hide();
$("#tab2").show();
window.location.hash = "#tab2";
};

這樣做已經(jīng)使得URI產(chǎn)生了變化,但是無論通過http://www.example.com/example.html#tab1還是http://www.example.com/example.html#tab2訪問頁面都是顯示Tab1的內(nèi)容,所以還需要在頁面載入時(shí)讀取#后的內(nèi)容。
復(fù)制代碼 代碼如下:

$(document).ready(ShowTab());
function ShowTab() {
if (window.location.hash == "#tab2")
ShowTab2();
else
ShowTab1();
}

這樣,刷新和加入收藏夾等功能都已經(jīng)可以使用了,不過前進(jìn)和后退還是會有麻煩。雖然這兩個(gè)按鈕已經(jīng)變得可用,但是點(diǎn)擊時(shí)網(wǎng)頁的內(nèi)容并沒有發(fā)生變化。我們需要用到body的onhashchange事件。onhashchange事件并不是所有瀏覽器都支持的,如果要使不支持該事件的瀏覽器也檢測#后內(nèi)容的變化,可能需要寫一個(gè)函數(shù)定期檢測window.location.hash的變化或者自己實(shí)現(xiàn)onhashchange事件。
示例代碼打包下載 (Visual Studio 2010)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平乡县| 平泉县| 枝江市| 永泰县| 隆回县| 宜兴市| 临高县| 山阳县| 五寨县| 康马县| 成武县| 垫江县| 塘沽区| 陕西省| 即墨市| 大同市| 廉江市| 保康县| 兴宁市| 葫芦岛市| 绵阳市| 姚安县| 潞西市| 昌平区| 杭锦后旗| 仙游县| 德钦县| 清镇市| 石景山区| 土默特右旗| 蕲春县| 中江县| 阿城市| 海安县| 祁东县| 镇坪县| 武冈市| 柳江县| 莲花县| 九龙城区| 科技|