繁体   English   中英

从历史对象获取最后一页 URL - 跨浏览器?

[英]getting last page URL from history object - cross browser?

是否可以从历史对象中获取最后一页的 URL? 我遇到了history.previous但这要么是未定义的,要么是不受我所见的保护。

不是来自history对象,而是来自document.referrer 如果您想获得最后访问的实际页面,没有基于对每个属性的支持创建单独案例的跨浏览器方式。

您无法在任何浏览器中访问历史记录。 这将是严重的安全违规,因为这意味着任何人都可以窥探其用户的历史记录。

您也许可以为 IE 和其他浏览器编写一个浏览器帮助对象,以便您访问它。 (类似于谷歌工具栏等)。 但这将要求用户允许该应用程序在他们的机器上运行。

有一些讨厌的方法可以使用一些“不太好”的方式来了解一些历史,但我不推荐它们。 查一下这个链接。

当然,正如人们所说,这是不可能的。 然而,为了解决这个限制,我所做的只是存储加载到 localStorage 中的每个页面,以便您可以创建自己的历史记录......

function writeMyBrowserHistory(historyLength=3) {
  // Store last historyLength page paths for use in other pages
  var pagesArr = localStorage.myPageHistory
  if (pagesArr===null) { 
        pagesArr = [];
  } else {
        pagesArr = JSON.parse(localStorage.myPageHistory);
        pagesArr.push(window.location.pathname)  // can use whichever part, but full url needs encoding
  }
  if (pagesArr.length>historyLength) {
        // truncate the array
        pagesArr = pagesArr.slice(pagesArr.length-historyLength,pagesArr.length)
  }
  // store it back 
  localStorage.myPageHistory = JSON.stringify(pagesArr);
  // optional debug
  console.log(`my page history = ${pagesArr}`)
}

function getLastMyBrowserHistoryUrl() {
  var pagesArr = localStorage.myPageHistory
  var url = ""
  if (pagesArr!==null) { 
    pagesArr = JSON.parse(localStorage.myPageHistory);
    // pop off the most recent url
    url = pagesArr.pop()
  }
  return url
}

那么然后在每个页面调用中的 js 上

writeMyBrowserHistory()

当你想找出最后一页时

var lastPageUrl = getLastMyBrowserHistoryUrl()

注意:localStorage 仅存储字符串,因此是 JSON。

让我知道代码中是否有任何错误,因为它已经从原始代码中美化了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM