【发布时间】:2011-01-23 22:18:26
【问题描述】:
是否可以从历史对象中获取最后一页 URL?我遇到了 history.previous,但它要么未定义,要么不受我所见的保护。
【问题讨论】:
-
有一个原因,为什么它受到保护。
-
history.previous无论如何都是非标准属性。 MDC 表示:此属性Web 内容不可用,其他浏览器不支持。
标签: javascript
是否可以从历史对象中获取最后一页 URL?我遇到了 history.previous,但它要么未定义,要么不受我所见的保护。
【问题讨论】:
history.previous 无论如何都是非标准属性。 MDC 表示:此属性Web 内容不可用,其他浏览器不支持。
标签: javascript
不是来自history 对象,而是来自document.referrer。如果您想获取最后一次实际访问的页面,则没有跨浏览器的方式,除非根据对每个属性的支持情况进行单独的案例。
【讨论】:
您无法在任何浏览器中访问历史记录。这将是严重的安全违规,因为这意味着任何人都可以窥探其用户的历史记录。
您也许可以为 IE 和其他允许您访问它的浏览器编写浏览器帮助对象。 (类似于谷歌工具栏等)。但这将要求用户允许该应用程序在他们的机器上运行。
有一些令人讨厌的方法可以使用一些“不太好”的方式来了解一些历史,但我不推荐它们。查找this link.
【讨论】:
当然,正如人们所说,这是不可能的。然而,我为了解决这个限制所做的只是将加载到 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。
如果代码中有任何错误,请告诉我,因为它是从原始代码中美化的。
【讨论】: