![](/img/trans.png)
[英]Javascript; Browser history; Is there cross-browser way to read previous page url( history.go(-1) ), and second last page ( history.go(-2) )?
[英]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.