2014-10-30 29 views
-1

我有一个弹出窗口,当您单击按钮时会打开。如果有人在该网站上呆了一分多钟,我希望它自动打开。现在,我有这样的:在网站1分钟后打开对话框

<script> 
jQuery(document).ready(function() { 

setTimeout(function() { 
    $('#registerpopup').dialog('open'); 
}, 60000); 

}); 
</script> 

的问题是,只有在页面1分钟不是对整个网站后的作品。我在网站1分钟后如何做到这一点?谢谢!

+0

你是指跨页面,就像用户转到不同的页面,但留在你的网站上? – 2014-10-30 18:48:38

+0

是的,就是这样 – raygo 2014-10-30 18:49:30

+0

将此代码添加到所有页面,它将适用于所有页面。 :) – 2014-10-30 18:49:44

回答

0

当一个人显示一个页面时,定时器在该页面的上下文中。当导航到站点的新页面时,以前在现有页面中运行的所有逻辑都将暂停并加载新页面。

例如,如果您正在查看www.google.com,然后访问www.bing.com,则您不希望Google仍能够在bing中运行逻辑。在同一站点(相同域)的页面之间导航也是如此。当浏览器从站点导航页面(正常情况下)到另一个页面时,将原始页面中的所有逻辑删除。

一个可能的解决方案是使用一个覆盖页面的iframe,并在iframe中进行导航。然后,在iframe之外将是一个页面,并且能够维持在该站点花费的时间的上下文和代码执行。

另一种解决方案可能是在cookie或localStorage中维护状态,并在每个新页面到达时都可以查看以前保存的值。这意味着您的计时器必须在每个页面上运行,但可以使用“站点”有状态值来知道暂停多久。

+0

我认为,他说的整个网站时,他的意思是相同的域名。 – 2014-10-30 18:50:12

+0

@Vega这也是我的理解。我能否更好地回答我的答案? – Kolban 2014-10-30 18:52:43

+0

是的,我的意思是同一个域名。 – raygo 2014-10-30 18:55:48

-1

使用iframe中

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function() { 

setTimeout(function() { 
    alert("test"); 
}, 60000); 
}); 

</script> 
<iframe src="yoururl" style="position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden; z-index:999999;"> 
    Your browser doesn't support IFrames 
</iframe>` 
0

使用本地存储HTML 5:http://diveintohtml5.info/storage.html

本地存储是很容易破解,但你只是想用它来计算连接时间,而不是用于敏感信息

如果您的网站是从服务器端创建的,另一种方法可能是使用会话变量。