只有当用户第一次访问网站时,我才想在我的网站上播放动画。我用 找到了“第一次访问者”代码localStorage
,但我没有找到这个。
问问题
12790 次
5 回答
10
您可以使用cookie
或localStorage
。假设您有以下 HTML 代码:
<div id="first">
Welcome Visitor
</div>
<p>This is my website.</p>
我们将display
offirst
元素设置为none
。所以它永远不会显示。
#first {
display: none;
}
然后我们第一次检查。如果是第一次,我们会展示那个元素(也许会用它做一些动画):
// this is the first time
if (! localStorage.noFirstVisit) {
// show the element
// and do the animation you want
document.getElementById('first').style.display = 'block';
// check this flag for escaping this if block next time
localStorage.noFirstVisit = "1";
}
于 2013-05-20T02:47:53.437 回答
4
我会做以下事情。你在这里不需要cookies。只需检查 document.referrer 是否包含您的域。如果不是,则访问者只是访问了您的域而没有访问更多页面。
if(document.referrer.indexOf("yourdomain.com")==-1) {
//first pageview of the session
}
此外,您还可以设置一个 cookie,以防 document.referrer 在某处丢失。
于 2015-08-26T13:33:49.017 回答
2
当访问者访问您的网站时,设置一个 cookie 来表明他们有。在每次页面加载时,检查该 cookie 是否存在。如果是这样,则该用户以前曾访问过您的网站。如果它不存在,那要么是他的第一次访问……要么他们已经从浏览器中删除了您的 cookie。
所以如果这是我第一次访问,cookie 不应该在那里,你应该播放动画。
于 2013-05-20T01:35:39.220 回答
1
我正在为 @Joseph the Dreamer 方法提供示例代码
创建和存储 Cookie
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
获取 Cookie 值
function getCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
c_value = null;
}
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
{
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
于 2013-05-20T13:53:31.590 回答
0
假设您指的是在此窗口中查看的第一页:
if (location.referrer == location.href)
{
// the page was opened in a new window or tab and accessed directly
}
else if (location.referrer.indexOf(location.hostname) == -1)
{
// The page before this one was not a page on this site
}
于 2013-05-20T02:11:30.917 回答