Javascript 每次访问仅执行一次js函数,刷新时再次执行
我希望以下代码每次访问只运行一次。如果我从主页导航到不同的页面并返回主页,我将不会再看到效果。如果我刷新页面,就会看到效果。代码如下:Javascript 每次访问仅执行一次js函数,刷新时再次执行,javascript,Javascript,我希望以下代码每次访问只运行一次。如果我从主页导航到不同的页面并返回主页,我将不会再看到效果。如果我刷新页面,就会看到效果。代码如下: function stack(){ $('#image').animate({ width: 200, height: 150, top: 0, },1500); } $(function(){ stack(); }); 以下是我正在做的:在页面加载
function stack(){
$('#image').animate({
width: 200,
height: 150,
top: 0,
},1500);
}
$(function(){
stack();
});
以下是我正在做的:在页面加载时,检查
文档。如果引用者与您的域不同或为空,则执行动画。在页面之间导航或刷新页面将使您的域位于文档中。referer
,因此您将跳过动画
$(function(){
if (!document.referrer.match(/buybluesky.com/) || document.referrer == document.location.href) {
stack();
}
});
编辑:
我似乎遗漏了什么,但我重新编辑了代码,以符合你的所有标准。除了检查referer以决定是否需要显示动画之外,它还检查referer是否等于当前位置。如果是,则表示您从此页面访问此页面后进行了刷新。在页面加载时,检查文档。referer
如果与您的域不同或为空,则执行动画。在页面之间导航或刷新页面将使您的域位于文档中。referer
,因此您将跳过动画
$(function(){
if (!document.referrer.match(/buybluesky.com/) || document.referrer == document.location.href) {
stack();
}
});
编辑:
我似乎遗漏了什么,但我重新编辑了代码,以符合你的所有标准。除了检查referer以决定是否需要显示动画之外,它还检查referer是否等于当前位置。如果是,则意味着这是一次刷新,因为您是从该页面来到该页面的。设置一个cookie,标记效果已发生,但也在每个页面加载上设置一个cookie,以跟踪最后一页。如果加载主页时,最后访问的页面也是主页,请再次运行效果
(使用)
在主页上:
var lastPage = $.cookie('last_page');
if (!lastPage || lastPage == document.location.pathname)
stack();
$.cookie('last_page', document.location.pathname, {expires: 0}); // expires: 0 makes it a session-only cookie
在每个页面(包括主页):
您可能还需要检查推荐人,以便在他们离开您的网站并稍后回来时再次运行。设置一个标记效果已发生的cookie,但也在每个页面加载上设置一个cookie,以跟踪最后一页。如果加载主页时,最后访问的页面也是主页,请再次运行效果
(使用)
在主页上:
var lastPage = $.cookie('last_page');
if (!lastPage || lastPage == document.location.pathname)
stack();
$.cookie('last_page', document.location.pathname, {expires: 0}); // expires: 0 makes it a session-only cookie
在每个页面(包括主页):
您可能还需要检查推荐人,以便在他们离开您的网站并稍后回来时,该推荐人将再次运行。使用会话存储并存储最后一页:
var visited = sessionStorage.getItem('visit');
if (visited == null || document.location.href == sessionStorage.getItem('lastPage')) {
stack();
sessionStorage.setItem('visit', 1);
}
sessionStorage.setItem('lastPage', document.location.href);
使用会话存储并存储最后一页:
var visited = sessionStorage.getItem('visit');
if (visited == null || document.location.href == sessionStorage.getItem('lastPage')) {
stack();
sessionStorage.setItem('visit', 1);
}
sessionStorage.setItem('lastPage', document.location.href);
尝试在JQuery中使用Cookie:如何在刷新时删除Cookie?不同的页面是从AJAX加载的页面部分还是全新的页面加载?这是全新的页面。尝试在JQuery中使用Cookie:如何在刷新时删除Cookie?不同的页面是从AJAX加载的页面部分还是全新的页面加载?这是全新的页面。但是什么呢如果您离开或关闭浏览器并在一个月后回来,会发生什么情况?该值仍然存在,并且不会有动画。@BrainsessionStorage
不是很持久。它只在浏览器打开时持续。“这比我想的饼干还要好吃。”金刚龙,如果他们在浏览完这一页后又从另一页来呢visit
将为1,但document.location.href
将等于lastPage
,除非您添加sessionStorage.setItem('lastPage',document.location.href')代码>在其他页面中。您应该在回答中指定它。但是如果您离开或关闭浏览器并在一个月后回来,会发生什么?该值仍然存在,并且不会有动画。@BrainsessionStorage
不是很持久。它只在浏览器打开时持续。“这比我想的饼干还要好吃。”金刚龙,如果他们在浏览完这一页后又从另一页来呢visit
将为1,但document.location.href
将等于lastPage
,除非您添加sessionStorage.setItem('lastPage',document.location.href')代码>在其他页面中。您应该在回答中指定它。我认为OP确实希望刷新时效果再次出现,在这种情况下,这不会完全起作用。现已修复。它检查referer是否=到当前位置。如果是这样,那么它必须是一个刷新文档。referer
在刷新前后是相同的,因此这也不起作用。true。我做了一些浏览,不知怎的,我测试了流量,它工作得很好。我在这里尝试了这个,但我想要的是,在动画之后,它应该处于正常状态(收缩),我认为OP确实希望刷新时再次出现效果,在这种情况下,这不会完全起作用。现在修复。它检查referer是否=到当前位置。如果是这样,那么它必须是一个刷新文档。referer
在刷新前后是相同的,因此这也不起作用。true。我做了一些浏览,不知怎的,我测试的流量工作得很好。我在这里尝试了这个,但我想要的是在动画之后,它应该处于正常状态(收缩)