[英]JS Redirect if Cookie Exists
我使用一个简单的.html页面将某人没有cookie重定向到页面A。 如果他们有cookie,我想将其发送到页面B。
我遇到的问题是某人将被重定向到页面A,但是当他们按下页面A上的后退按钮时,.js不在我简单的.html页面上执行并将其发送到页面B。相反,空白.html页面正在加载,仅此而已。
//this function fixed Safari
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
window.onunload = function() {}; // this seems to have fixed Firefox
setTimeout(function() {
if (document.cookie.indexOf("visitedinhour=") >= 0) {
// They've been here before.
window.location = 'https://www.google.com';
} else {
// set a new cookie
document.cookie = "visitedinhour=true; max-age=" + 3600;
window.location = 'https://www.bing.com';
}
}, 200);
我想发生的是有人访问我的.html页面,重定向到页面A,然后单击“后退”按钮,然后重定向到页面B。
更新: Firefox似乎可以正常工作。 Chrome和Safari没有。 Chrome浏览器返回到我的.html页面之前的页面,而Safari仍会加载空白的.html页面。
更新2: Safari是固定的; Chrome无法正常运行。 在Bing.com上并单击“后退”按钮时,浏览器将转到包含此代码的.html页面之前的页面。
这可能是Firefox中的已知问题。
尝试设置要在window.onunload上调用的空函数:
window.onunload = function() { };
这是因为Firefox(以及Safari和Opera)使网站保持完整。 它不会立即破坏您的页面以进入下一页,从而为用户提供了更快,更流畅的后退/前进页面转换。
更新
这应该适用于Safari(从bfcache加载页面时将强制重新加载):
window.onpageshow = function(event) { if (event.persisted) { window.location.reload() } };
更新2:
该代码应与所有浏览器兼容,尽管您可能也需要使用上述代码段。
window.addEventListener("pageshow", function (event) { var historyTraversal = event.persisted || ( // Check if performance not undefined (restored from cache) typeof window.performance != "undefined" && // Check if the back button was used window.performance.navigation.type === 2 ); if (historyTraversal) { // Handle page restore and reload the page window.location.reload(); } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.