1

我有一个脚本可以在 X 秒后将用户重定向到新页面。被重定向后,如果用户点击后退按钮并使用此脚本返回页面,我希望脚本不再触发。

setTimeout(function() {
  window.location.href = "/mypage.html";
}, 3000);
4

2 回答 2

1

您可以像这样在 JavaScript 中获取 referrer 属性:

var referrer_url = document.referrer;
document.write("You come from this url: " +referrer_url);

然后,只需使用条件检查来包装您setTimeout()的内容,以查看该人来自哪个 URL,并根据他们的来源进行(或不)进行重定向。

于 2012-11-28T14:29:33.533 回答
0

我使用 Cerbrus 提供的链接并通过 cookie 路由解决了这个问题。比我希望的要复杂,但它完成了工作。

此脚本将在 3 秒后将用户重定向到新页面。它将首先检查 cookie 是否存在,如果存在则不会重定向。如果没有 cookie,它将创建一个 cookie,然后重定向用户。如果用户点击后退按钮,脚本将找到创建的 cookie,并阻止脚本再次重定向用户。

// Function to create a new cookie
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

// Function to read a cookie
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

// Use the readCookie function to assign the cookie to a variable (if it's available)
var currentcookie = readCookie('mycookie');

// If/else statement to fire javascript if the cookie is not present
if (currentcookie) {
    // do nothing since the cookie exists
}
else {
    // Cookie doesn't exist, so lets do our redirect and create the cookie to prevent future redirects

    // Create a cookie
    createCookie('mycookie','true');

            // Perform the redirect after 3 seconds
    setTimeout(function() {
      window.location.href = "/mypage.html";
    }, 3000);
}
于 2012-11-29T14:27:47.257 回答