瀉藥
理論上不能,首先我們需要理解瀏覽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鍵就一直是灰的。
瀉藥
理論上不能,首先我們需要理解瀏覽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鍵就一直是灰的。