首页 > 解决方案 > 为cookie检查功能添加条件而不会导致无限循环

问题描述

我有一个网页,在页面加载时检查 cookie,如果 cookie 不存在,用户将根据条件重定向到某个登录页面。我正在尝试向 cookie 检查添加另一个条件,但它正在创建一个无限循环。有没有办法允许另一个条件?

function checkCookie() {
    var current_url = window.location.pathname;
    var logInCookie = _siteNS.Utils.readCookie('x-access');

    if (!logInCookie) {
      if (
        window.location.toString().includes('-fr') &&
        current_url != '/landing-fr.html'
      ) {
        window.location.replace('/landing-fr.html');
      } else if (
        window.location.href.indexOf('-fr') === -1 &&
        current_url != '/landing.html'
      ) {
        window.location.replace('/landing.html');
      } else if (
        window.location.href.indexOf('-fr') === -1 &&  *=== This is creating infinite loop===*
        current_url === '/Important_Safety_Information.html'
      ) {
        window.location.replace('/Important_Safety_Information.html');
      }
    }
  }

标签: javascriptjquery

解决方案


问题是您将用户重定向回他们已经在的页面。当用户加载同一页面时,它将再次调用相同的逻辑并再次将用户重定向......到同一页面。

根据对上述问题的评论:

我想要做的是如果用户去 '/Important_Safety_Information.html' 呆在那里并且不重定向

如果您不想重定向用户,那么......不要重定向用户。只需完全删除最后一个else if块,因为您不想执行该操作。或者,在最坏的情况下,如果您需要将此条件包含在正在进行的条件列表中,那么只需将块保持为空:

else if (
  window.location.href.indexOf('-fr') === -1 &&
  current_url === '/Important_Safety_Information.html'
) { /* do nothing */ }

推荐阅读