【问题标题】:Open dialog after 1 minute in site在站点 1 分钟后打开对话框
【发布时间】:2014-10-30 18:42:44
【问题描述】:

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

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

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

});
</script>

问题是仅在一分钟后在页面中而不是在整个站点上有效。在网站上停留 1 分钟后如何执行此操作?谢谢!

【问题讨论】:

  • 您的意思是跨页面,例如当用户转到不同的页面但留在您的网站上时?
  • 是的,就是这样
  • 将此代码添加到所有页面,它将适用于所有页面。 :)
  • @ApulGupta 显然不会做他想做的事。
  • 谁对这个问题投了反对票,你能写下为什么吗?投反对票对我和下一个有这个问题的人没有帮助

标签: javascript jquery dialog settimeout


【解决方案1】:

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

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

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

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

【讨论】:

  • 我认为,当他说整个网站时,他的意思是同一个域。
  • @Vega 我也是这么理解的。我可以更好地回答我的问题吗?
  • 是的,我的意思是同一个域。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    使用 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>`
    

    【讨论】:

      猜你喜欢
      • 2022-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多