回覆列表
  • 1 # 使用者967190039694

    瀉藥

    理論上不能,首先我們需要理解瀏覽back的機制。

    一般來說在訪問頁面的時候,只要跳轉,URL就會發生變化,瀏覽器會以堆疊的形式記錄下你的訪問歷史。

    而在back的時候,瀏覽器會訪問歷史堆疊裡的上一條記錄。

    那我們來看看有多少種方式可以跳轉。

    JS實現的跳轉

    對於瀏覽器來說,這個過程一共3個頁面參與。但是對於使用者來說,由於B頁面存在的時間非常短,所以感覺只有2個頁面。在使用者點選“back”時,使用者的目的是回到A,但是事實上返回到了B。而B頁面上又有向C跳轉的指令碼,這樣使用者又回到了C。感覺是back無效。

    重定向實現的跳轉

    這個屬於Http協議級別東西,例如301跳轉,這個跳轉是伺服器強制的。這種是避免不了的。

    Ajax區域性重新整理

    這種方式在現代網站建設中比較常見,這種跳轉方式比起整個頁面重新整理的體驗要好很多。可以由於區域性重新整理,本身並未發生實質性的頁面跳轉,永遠停留在第一個地址,瀏覽器也不會記錄history,自然連back鍵都不能點。

    但是多數這種網站會用hashcode或者window.history.pushstate的方式來重寫URL使得瀏覽器可以紀錄一個history,然後再監聽url的變化解析url更新頁面內容。

    如果你遇到的網站沒有對URL做操作...放棄吧,你怎麼也拯救不了這麼爛的網站了。

    當然,有的網站缺德的不用window.history.pushstate而是用window.history.replacestate,看著URL在一直變,但是back鍵就一直是灰的。

  • 中秋節和大豐收的關聯?
  • 美術生怎樣報志願?