Получить URL последней страницы из объекта истории - кросс-браузер?
Привет, ребята - простой вопрос без простого ответа для меня еще:)
Можно ли получить URL последней страницы из объекта истории? Я прошел через историю.предыдущий, но это либо не определено, либо защищено от того, что я видел
3 ответа
Не из history
объект, но из document.referrer
, Если вы хотите получить последнюю фактическую страницу, к которой вы обращались, нет кросс-браузерного способа без отдельного случая, основанного на поддержке каждого свойства.
Вы не можете попасть в историю в любом браузере. Это было бы серьезным нарушением безопасности, так как это означало бы, что каждый может просматривать историю своих пользователей.
Вы можете написать Browser Helper Object для IE и других браузеров, которые предоставляют вам доступ к этому. (Аналогично панели инструментов Google и др.) Но это потребует от пользователей разрешения запускать это приложение на своем компьютере.
Есть некоторые неприятные способы, с помощью которых вы можете попасть в историю, используя не очень приятные способы, но я бы не советовал их. Посмотрите эту ссылку.
Конечно, как говорят, это невозможно. Однако то, что я сделал, чтобы обойти это ограничение, - это просто сохранить каждую страницу, загруженную в 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.
Сообщите мне, есть ли у меня какие-либо ошибки в коде, поскольку он был улучшен по сравнению с оригиналом.