【问题标题】:setInterval or window.location are not working properly with Opera, IE and SafarisetInterval 或 window.location 在 Opera、IE 和 Safari 中无法正常工作
【发布时间】:2012-08-09 15:13:01
【问题描述】:

如果 cookie 存在,我正在尝试进行重定向,它在 Chrome 和 Firefox 上运行,但在 Opera、IE 和 Safari 上不运行。

function listenCookieChange() {
   var intervalHolder = setInterval(function() {
   if(getCookie('foo')){
      clearInterval(intervalHolder);

      window.location.href = 'http://XXXXXXXXXXXXXX/inscription2.php';
   }
}, 100);
}
listenCookieChange();

cookies 是在浏览器上设置的,所以问题不是来自那个部分。

提前致谢

编辑:这是 getCookie 的代码

function getCookie(c_name)
{
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name)
        {
            return unescape(y);
        }
    }
}

【问题讨论】:

  • 你能添加你的getCookie()代码吗?

标签: javascript jquery redirect cookies setinterval


【解决方案1】:

找不到任何故障。已在 IE7-IE9 和 Opera 10-11 上测试过您的脚本。

function getCookie(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}

function listenCookieChange() {
    var intervalHolder = setInterval(function() {
        if (getCookie('foo')) {
            clearInterval(intervalHolder);

            //window.location.href = 'http://XXXXXXXXXXXXXX/inscription2.php';
            alert('true');
        }
    }, 100);
}
listenCookieChange();

document.cookie = 'foo = true';​

【讨论】:

  • 这个问题似乎只发生在 PHP cookie 上。我会更多地研究它。谢谢你的回答帮助了我。
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2023-03-13
相关资源
最近更新 更多