我有一个脚本可以在 X 秒后将用户重定向到新页面。被重定向后,如果用户点击后退按钮并使用此脚本返回页面,我希望脚本不再触发。
setTimeout(function() {
window.location.href = "/mypage.html";
}, 3000);
我有一个脚本可以在 X 秒后将用户重定向到新页面。被重定向后,如果用户点击后退按钮并使用此脚本返回页面,我希望脚本不再触发。
setTimeout(function() {
window.location.href = "/mypage.html";
}, 3000);
您可以像这样在 JavaScript 中获取 referrer 属性:
var referrer_url = document.referrer;
document.write("You come from this url: " +referrer_url);
然后,只需使用条件检查来包装您setTimeout()
的内容,以查看该人来自哪个 URL,并根据他们的来源进行(或不)进行重定向。
我使用 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);
}