中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

js點擊返回跳轉到指定頁面實現過程
來源:易賢網 閱讀:1548 次 日期:2016-07-08 09:58:40
溫馨提示:易賢網小編為您整理了“js點擊返回跳轉到指定頁面實現過程”,方便廣大網友查閱!

這篇文章主要介紹了js點擊返回跳轉到指定頁面實現過程,需要的朋友可以參考下

這個功能之前有簡單的帶過,這次詳細的講解下原理和存在的問題(由于是運用html5的新API 所以有兼容問題,推薦移動端使用該方法)。

功能描述:

在瀏覽器中新建標簽頁并指定一個網址,網頁加載完畢后,正常流程下是不允許點擊返回的。因為當前標簽頁的相關歷史記錄是沒有的,所以沒有記錄可以返回。

應客戶要求,需要在這種情況下,給他的歷史記錄里添加一個鏈接(比如首頁),這樣在新打開的頁面,點擊返回就可以跳轉到首頁,讓用戶看到系統的各種功能,推廣平臺。

一、知識要點

HTML5引進了history.pushState()方法和history.replaceState()方法,它們允許你逐條地添加和修改歷史記錄條目。這些方法可以協同window.onpopstate事件一起工作。

案例:

假設 http://mozilla.org/foo.html 將執行如下JavaScript代碼:

代碼如下:

var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html");

這將讓瀏覽器的地址欄顯示http://mozilla.org/bar.html,但不會加載bar.html頁面也不會檢查bar.html是否存在。

假設現在用戶導航到了http://google.com,然后點擊了后退按鈕,此時,地址欄將會顯示http://mozilla.org/bar.html,并且頁面會觸發popstate事件,該事件中的狀態對象(state object)包含stateObj的一個拷貝。該頁面看起來像foo.html,盡管頁面內容可能在popstate事件中被修改。

如果我們再次點擊后退按鈕,URL將變回http://mozilla.org/foo.html  文檔將觸發另一個popstate事件,這次的狀態對象為null。回退同樣不會改變文檔內容。

pushState()方法

pushState()有三個參數:一個狀態對象、一個標題(現在會被忽略),一個可選的URL地址。下面來單獨考察這三個參數的細節:

狀態對象(state object) — 一個JavaScript對象,與用pushState()方法創建的新歷史記錄條目關聯。無論何時用戶導航到新創建的狀態,popstate事件都會被觸發,并且事件對象的state屬性都包含歷史記錄條目的狀態對象的拷貝。

任何可序列化的對象都可以被當做狀態對象。因為FireFox瀏覽器會把狀態對象保存到用戶的硬盤,這樣它們就能在用戶重啟瀏覽器之后被還原,我們強行限制狀態對象的大小為640k。如果你向pushState()方法傳遞了一個超過該限額的狀態對象,該方法會拋出異常。如果你需要存儲很大的數據,建議使用sessionStorage或localStorage。

標題(title) — FireFox瀏覽器目前會忽略該參數,雖然以后可能會用上。考慮到未來可能會對該方法進行修改,傳一個空字符串會比較安全。或者,你也可以傳入一個簡短的標題,標明將要進入的狀態。

地址(URL) — 新的歷史記錄條目的地址。瀏覽器不會在調用pushState()方法后加載該地址,但之后,可能會試圖加載,例如用戶重啟瀏覽器。新的URL不一定是絕對路徑;如果是相對路徑,它將以當前URL為基準;傳入的URL與當前URL應該是同源的,否則,pushState()會拋出異常。該參數是可選的;不指定的話則為文檔當前URL。

注意: 在 Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) 至 Gecko 5.0 (Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2) 中,傳入的對象使用JSON來進行序列化。從 Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)開始,對象使用結構化拷貝算法來進行序列化。這將允許更多類型的對象能夠安全傳入。

某種意義上,調用pushState()有點類似于設置window.location='#foo',它們都會在當前文檔內創建和激活新的歷史記錄條目。但pushState()有自己的優勢:

1、新的URL可以是任意的同源URL,與此相反,使用window.location方法時,只有僅修改 hash 才能保證停留在相同的document中。

2、根據個人需要來決定是否修改URL。相反,設置window.location='#foo',只有在當前hash值不是foo時才創建一條新歷史記錄。

3、你可以在新的歷史記錄條目中添加抽象數據。如果使用基于hash的方法,你只能把相關數據轉碼成一個很短的字符串。

注意pushState()方法永遠不會觸發hashchange事件,即便新的地址只變更了hash。

popstate事件

每當激活的歷史記錄發生變化時,都會觸發popstate事件。如果被激活的歷史記錄條目是由pushState所創建,或是被replaceState方法影響到的,popstate事件的狀態屬性將包含歷史記錄的狀態對象的一個拷貝。

replaceState()方法

history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創建新的條目。

當你為了響應用戶的某些操作,而要更新當前歷史記錄條目的狀態對象或URL時,使用replaceState()方法會特別合適。

二、實現思路

1.利用popstate事件,監聽點擊返回事件。

2.觸發事件時,判斷當前頁面的歷史記錄 是否有頁面可以返回。

3.如果沒有頁面可以返回,則插入兩條記錄:

1)、指定的跳轉頁面。

2)、空記錄。(使當前頁面不發生變化)

三、實現方法

//返回之前沒頁面則返回首頁

    function pushHistory() {

      if (history.length < 2) {

        var state = {

          title: "index",

          url: getHttpPrefix + "index.html"

        };

        window.history.pushState(state, "index", location.href);

        state = {

          title: "index",

          url: ""

        };

        window.history.pushState(state, "index", "");

      }

      //lll("history.state" + history.state)

      //console.log(history.state) 

}

判斷當前history中的記錄個數,由于頁面加載的時候,瀏覽器會自動push進一個記錄。所以要判斷長度是否小于2.

塞進的state對象是為了獲取對應的url鏈接。

注意點:

第一個pushState我將跳轉url放進state對象 方便跳轉操作。第二個參數沒有實際意義,因為現在的瀏覽器基本不適用這個參數。

第三個參數是會替換當前地址欄的鏈接的,但是頁面不會發生跳轉。(我之前犯了個錯誤,將第三個參數設置為首頁鏈接,導致了地址欄更改為首頁鏈接,以至于在當前頁的鏈接 都以首頁為基礎進行跳轉,導致頁面的所有鏈接都跳轉錯誤了。)

setTimeout(function () {

    pushHistory()

    window.addEventListener("popstate", function (e) {

      lll("popstate"+window.history.state)

      if (window.history.state != null && window.history.state.url != "") {

        location.href = window.history.state.url

      }

    });

  }, 300);

 這段代碼放置在頁面的ready事件中執行,延遲300毫秒是為了將操作滯后,防止與系統pop事件沖突。

if語句為了判斷 history是否存在state對象,因為只有滿足我們要求的記錄才會有我們添加的state對象 所以 根據這點可以進行頁面的跳轉操作。

這樣就可以實現我們想要的效果。

四、寫在最后

缺點:

1. 很明顯,就如開頭提到的。只適合支持html5的瀏覽器使用。

2.由于插進了兩條記錄 ,所以 類似于 微信這種移動端的返回,需要再點擊兩次返回,才能推出頁面,回到微信聊天窗口,用戶體驗不好。

總結:

這種方法 一定還可以優化和完善,只是目前我的實力不足,還不足以完善到完美的程度。

希望看到這篇文章的朋友可以得到一些啟發,或者是有更好的方法實現。

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
精东粉嫩av免费一区二区三区| 亚洲精品孕妇| 一区二区三区亚洲| 中文成人激情娱乐网| 韩国av一区二区| 欧美先锋影音| 欧美人与禽猛交乱配| 亚洲精品美女久久7777777| 国产精品福利在线观看网址| 欧美一区观看| 99热在这里有精品免费| 亚洲视频中文| 亚洲娇小video精品| 亚洲日本视频| 欧美精品色综合| 欧美www在线| 亚洲一区二区三区精品动漫| 欧美日韩午夜在线| 欧美日韩另类视频| 一本久久综合亚洲鲁鲁五月天| 一区二区欧美精品| 亚洲欧洲日本专区| 亚洲成人自拍视频| 亚洲国产日韩美| 一区二区在线观看视频| 欧美激情精品久久久久久| 欧美大色视频| 亚洲小少妇裸体bbw| 亚洲小说春色综合另类电影| 国产欧美日韩三区| 国产精品入口夜色视频大尺度| 欧美视频在线观看免费| 欧美韩国日本综合| 欧美主播一区二区三区美女 久久精品人| 亚洲日本va午夜在线电影| 国产一区二区按摩在线观看| 一区二区三区黄色| 亚洲激情电影在线| 亚洲国产片色| 国产精品扒开腿做爽爽爽视频| 国产精品色婷婷久久58| 欧美午夜电影一区| 国内精品久久久久久 | 欧美视频久久| 欧美激情区在线播放| 欧美日韩国产综合久久| 欧美人成在线视频| 国产午夜精品麻豆| 激情综合激情| 在线精品福利| 亚洲女性喷水在线观看一区| 欧美永久精品| 欧美日韩国产在线播放网站| 国产精品久久久久999| 狠狠色综合日日| 最新日韩在线视频| 模特精品裸拍一区| 欧美日韩一卡| 国产精品久久久久久久久久久久久| 国产日韩av高清| 亚洲高清色综合| 亚洲欧美99| 久久婷婷激情| 国产精品入口麻豆原神| 黄色另类av| 91久久国产综合久久91精品网站| 亚洲综合视频网| 久久亚洲精品一区二区| 国产精品久久久久久久久久免费看| 国产日韩欧美一区在线| 亚洲午夜精品久久久久久浪潮| 欧美在线中文字幕| 看片网站欧美日韩| 国产精品一区二区久久国产| 在线不卡a资源高清| 亚洲女同精品视频| 欧美成ee人免费视频| 国产亚洲精品成人av久久ww| 亚洲精品乱码久久久久久日本蜜臀 | 久久综合激情| 欧美日韩精品一区| 亚洲日本欧美| 欧美在线视频一区二区三区| 欧美美女日韩| 一区二区视频免费在线观看| 欧美精品九九| 国产在线视频不卡二| 国内精品久久久久久影视8 | 一区二区三区自拍| 欧美亚洲综合另类| 欧美日韩综合精品| 日韩一二三在线视频播| 六月婷婷久久| 欧美日韩福利在线观看| 亚洲精品美女在线| 久久伊人一区二区| 久久精品99国产精品酒店日本| 国产精品乱人伦一区二区| 欧美日韩一区视频| 久久精品人人做人人综合| 日韩小视频在线观看专区| 国内外成人免费视频 | 欧美主播一区二区三区美女 久久精品人| 国产精品久久久对白| 久久亚洲电影| 在线中文字幕日韩| 久久国产精品亚洲va麻豆| 国产伦精品一区二区三区| 一级成人国产| 欧美精品乱人伦久久久久久 | 国产精品一区二区三区久久| 免费看黄裸体一级大秀欧美| 久久aⅴ乱码一区二区三区| 一区二区三区不卡视频在线观看 | 加勒比av一区二区| 欧美日韩一区二区在线视频| 久久精品国产一区二区电影| 久久久久久日产精品| 欧美一区二区高清| 媚黑女一区二区| 欧美一区激情视频在线观看| 国产精品久久久久久久浪潮网站| 欧美69wwwcom| 欧美精品成人一区二区在线观看| 国产精品亚洲产品| 欧美成人精精品一区二区频| 欧美高清视频一区二区| 激情综合久久| 久久香蕉国产线看观看网| 精品1区2区| 亚洲深夜福利网站| 国产一区二区av| 久久婷婷成人综合色| 国产欧美日韩一区二区三区在线观看| 欧美视频观看一区| 国产日韩av高清| 夜夜嗨av一区二区三区网页| 欧美成ee人免费视频| 欧美国产日韩一区二区在线观看| 欧美日韩色婷婷| 国产精品久久国产愉拍| 国产日产欧产精品推荐色 | 黑人一区二区三区四区五区| 欧美诱惑福利视频| 亚洲美女色禁图| 国产精品乱人伦一区二区| 欧美成人dvd在线视频| 99伊人成综合| 欧美日韩一区二区三区在线视频| 久久久久久久久久久久久久一区| 1000部国产精品成人观看| 国产精品豆花视频| 午夜影视日本亚洲欧洲精品| 亚洲巨乳在线| 国产日韩一区二区三区在线播放| 久久综合久色欧美综合狠狠| 亚洲图片你懂的| 激情综合色综合久久综合| 欧美日韩成人综合天天影院| 妖精成人www高清在线观看| 国产精品色在线| 欧美午夜国产| 可以看av的网站久久看| 亚洲精品国产系列| 一色屋精品视频免费看| 欧美日韩精品一区二区三区| 美日韩丰满少妇在线观看| 亚洲欧美不卡| 亚洲一区二区精品视频| 亚洲国产成人av在线| 国产一区二区av| 欧美色欧美亚洲另类七区| 久久躁日日躁aaaaxxxx| 久久久精品免费视频| 亚洲专区一区二区三区| 亚洲小说春色综合另类电影| 亚洲欧洲日本一区二区三区| 亚洲国内自拍| 国产综合色产| 精品成人一区二区三区四区| 国产伦精品一区二区三区视频孕妇 | 国产伦精品一区二区三区视频孕妇| 午夜精品电影| 日韩五码在线| 一本大道久久a久久精二百| 国产精品亚洲综合色区韩国| 欧美福利影院| 性色av一区二区三区在线观看| 国产一区在线免费观看| 欧美日韩精选| 男女av一区三区二区色多| 亚洲综合视频1区| aa级大片欧美| 国产免费成人av| 欧美国产激情| 欧美一区二区免费观在线| 国产精品日韩一区二区| 国产欧美一区二区三区久久人妖| 欧美日韩精品二区| 国产日本欧美视频|