我一直在使用浏览器历史记录来返回页面。但是,由于JS无法可靠地读取用户历史记录,因此当没有历史记录时,我无法知道我的按钮不再有效。
如果背面失败,我尝试使用这些行中的某些内容来重定向页面:
window.history.back();
setTimeout(function () { window.location.href = "http://www.stackoverflow.com"; }, 500);
然而,这完全依赖于任意时间段,这对于所有用户来说可能会或可能不会起作用(并且设置得足够高以保证它对每个人都有效会为大多数人提供一种非常缓慢的体验)
在评论中建议我现在也尝试使用这些方面的各种尝试:
if (!window.history.back()) {
window.location.href = "http://www.stackoverflow.com";
}
然而window.history.back()
将始终返回false
,无论该功能是否成功。我认为这是浏览器内置的安全功能。
有没有人知道如何检测失败的页面更改,或者以更优雅的方式解决此问题?
答案 0 :(得分:1)
我最终得到了一个相对有用的(如果有点hacky)解决方案:
// On page load
if (history.length <= 1) {
/*
* This will only execute the first time the page (with absolutely no browser
* history, including browser splash screens that may add to the history)
* is loaded, it wont happen if you navigate back to the page
* so store the current page in local storage
*/
localStorage.setItem("root", document.location);
}
// Then execute some code only on the root
if (localStorage.getItem("root") == document.location) {
// Your code
}
一些潜在的问题: