天天看點

H5傳回上一頁時重新整理上一頁面JQuery的代碼 解決辦法: 接下來是原因:

 解決辦法:

document.referrer?location.href=document.referrer:history.back();
           

 為什麼會存在需要判斷的情況呢,因為referrer是存在擷取不到的可能性的。一般正常流程是沒有問題的。往下面看,就知道了。

 接下來是原因:

H5開發實際過程中:我們在送出了表單之後,很多需要傳回清單頁面,一般情況是使用:

history.go(-1);
//或者
history.back();
           

但是,會造成清單頁面不會重新整理,新送出或者修改的資料不會顯示的問題

很多網上資料說使用:

location.reload(); 
           

來進行重新整理,可能在pc端是正常可以使用的,但是h5頁面是不可用的

接下來介紹一下:

location.href=document.referrer;
           

javascript 有一個可以擷取前一頁面的URL位址的方法:document.referrer

document.referrer 的來源

  1. referrer 屬性可傳回載入目前文檔的文檔的 URL【摘自W3CSHCOOL】, 如果目前文檔不是通過超連結通路的,那麼目前文檔的URL為NULL,這個屬性允許用戶端的 javascript 通路 HTTP 頭部;
  2. referrer 屬性,我們可以從 http 頭部擷取

document.referrer 的相容性

document.referrer IE7都支援,它的相容性比較高,Android 5.0開始支援,iOS都支援,PC端浏覽器從IE7就開始支援了,相容性沒有什麼大的問題。

但是有個小小的問題,就是 IE 會主動清除 referref 屬性。在IE中用javascript做跳轉,比如用window.location.href = “”; google如果使用document.referrer無法取到浏覽器請求的HTTP referrer,因為IE清空了。而其他主流浏覽器Firefox和Chrome都會保留referrer,沒辦法,隻好判斷,如果是IE浏覽器,就主動給它增加一個 referrer 。這樣的原理就是給IE浏覽器的頁面偷偷加了個連結,然後自動點這個連結,于是referrer就能保留了。

無法擷取 referrer 資訊的情況

下面的場景無法獲得 referrer 資訊,以下前8條屬于【張鑫旭】:

  1. 直接在浏覽器中輸入位址
  2. 使用

    location.reload()

    重新整理(

    location.href

    或者

    location.replace()

    重新整理有資訊)
  3. 在微信對話框中,點選進入微信自身浏覽器
  4. 掃碼進入微信或QQ的浏覽器
  5. 直接新視窗打開一個頁面
  6. 從https的網站直接進入一個http協定的網站(Chrome下親測)
  7. a

    标簽設定

    rel="noreferrer"

    (相容IE7+)
  8. meta

    标簽來控制不讓浏覽器發送

    referer

  9. 點選 flash 内部連結
  10. Chrome4.0以下,IE 5.5+以下傳回空的字元串
  11. 使用 修改 Location 進行頁面導航的方法,會導緻在IE下丢失 referrer,這可能是IE的一個BUG
  12. 跨域

繼續閱讀