document.referrer和history.go(-1)退回上一頁區別


javascript:location=document.referrer;和javascript:history.go(-1);區別:

返回上一頁,在PC端我們可以使用:history.go(-1)或者history.back(),可以正常返回第一層。這樣,我們不需要上一頁的 url 具體是什么,只要使用 history 一般都沒啥問題。

 

但是在移動端,如果想要返回上一頁。比如從A頁面跳到B頁面,如果B頁面想返回A頁面,為了防止不會跳錯,必須要有一個 <  按鈕,給它加 history.go(-1) ,返回上一層。

<a href="javascript:history.go(-1)" class="header-back jsBack">返回</a>

 

那如果我們沒有返回上一頁的 < 的按鈕,在手機上怎么操作才會返回上一頁,比如:從微信分享進來的,進入的是微信內頁,此時,內頁就是第一頁,它沒有上一頁,要怎么返回?這時點返回按鈕是沒有反應的,不是一個好的用戶體驗,十有八九的人會誤以為是BUG,這絕對是個坑爸的問題。

移動端無論是原生app還是傳統的網頁,返回上頁是一個比較強烈的需求。

 

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

document.referrer 的來源

  1. referrer 屬性可返回載入當前文檔的文檔的 URL【摘自W3CSHCOOL】, 如果當前文檔不是通過超鏈接訪問的,那么當前文檔的URL為NULL,這個屬性允許客戶端的 javascript 訪問 HTTP 頭部;
  2. referrer 屬性,我們可以從 http 頭部獲取

無法獲取 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. 跨域
  13. <meta content="never" name="referrer">

     

怎么解決無法獲取 referrer 的情況,還沒有很好的方法,盡量避免吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM