在站点1分钟后打开对话框

时间:2014-10-30 18:42:44

标签: javascript jquery dialog settimeout

单击按钮时会打开一个弹出窗口。如果有人在网站上停留超过一分钟,我希望它自动打开。现在我有这个:

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

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

});
</script>

问题是只能在页面中一分钟后才能在整个站点上运行。如何在网站1分钟后完成此操作?谢谢!

3 个答案:

答案 0 :(得分:0)

当显示页面时,计时器位于该页面的上下文中。当导航到站点的新页面时,先前在现有页面中运行的所有逻辑将停止并加载新页面。

例如,如果您正在查看www.google.com然后访问www.bing.com,那么您不希望谷歌仍然可以在bing中运行逻辑。对于在同一站点(相同域)的页面之间导航也是如此。当浏览器从站点导航页面(通常)导航到另一个页面时,会删除原始页面中的所有逻辑。

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

另一种解决方案可能是在cookie或localStorage中维护状态,当到达每个新页面时,它可以查看以前保存的值。这意味着您的计时器必须在每个页面上运行,但可以使用&#34; site&#34;状态值,知道暂停多长时间。

答案 1 :(得分:0)

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

本地存储很容易被破解,但您只是想用它来计算连接时间而不是用于合理的信息

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

答案 2 :(得分:-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>`