繁体   English   中英

如果存在Cookie,则JS重定向

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM