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加载的页面部分还是全新的页面加载?这是全新的页面。但是什么呢如果您离开或关闭浏览器并在一个月后回来,会发生什么情况?该值仍然存在,并且不会有动画。@Brain
sessionStorage
不是很持久。它只在浏览器打开时持续。“这比我想的饼干还要好吃。”金刚龙,如果他们在浏览完这一页后又从另一页来呢
visit
将为1,但
document.location.href
将等于
lastPage
,除非您添加
sessionStorage.setItem('lastPage',document.location.href')在其他页面中。您应该在回答中指定它。但是如果您离开或关闭浏览器并在一个月后回来,会发生什么?该值仍然存在,并且不会有动画。@Brain
sessionStorage
不是很持久。它只在浏览器打开时持续。“这比我想的饼干还要好吃。”金刚龙,如果他们在浏览完这一页后又从另一页来呢
visit
将为1,但
document.location.href
将等于
lastPage
,除非您添加
sessionStorage.setItem('lastPage',document.location.href')在其他页面中。您应该在回答中指定它。我认为OP确实希望刷新时效果再次出现,在这种情况下,这不会完全起作用。现已修复。它检查referer是否=到当前位置。如果是这样,那么它必须是一个刷新
文档。referer
在刷新前后是相同的,因此这也不起作用。true。我做了一些浏览,不知怎的,我测试了流量,它工作得很好。我在这里尝试了这个,但我想要的是,在动画之后,它应该处于正常状态(收缩),我认为OP确实希望刷新时再次出现效果,在这种情况下,这不会完全起作用。现在修复。它检查referer是否=到当前位置。如果是这样,那么它必须是一个刷新
文档。referer
在刷新前后是相同的,因此这也不起作用。true。我做了一些浏览,不知怎的,我测试的流量工作得很好。我在这里尝试了这个,但我想要的是在动画之后,它应该处于正常状态(收缩)