有没有办法在页面加载时执行javascript函数,然后再不再执行10分钟。即使用户浏览另一个页面?如果他们不希望功能再次运行,直到10分钟结束?
答案 0 :(得分:8)
只需创建要执行onload的函数,在DOM就绪时调用一次,然后使用setTimeout()
<script type="text/javascript">
function doSomething() {
alert("Doing something here");
}
window.onload = function () {
doSomething(); //Make sure the function fires as soon as the page is loaded
setTimeout(doSomething, 600000); //Then set it to run again after ten minutes
}
</script>
编辑: 即使他们在另一页上,也没有注意到该部分。如果它是您网站上的另一个页面,您可以在页面加载后设置cookie,并包含设置cookie时的时间戳。在其余页面的window.onload中,您可以读取该时间戳,并计算是否已经过了10分钟。如果有,请再次调用该函数。
编辑:10分钟是600000毫秒
答案 1 :(得分:3)
即使用户浏览另一个页面?
不。页面关闭后,您将无法控制发生的情况。
答案 2 :(得分:1)
使用setInterval
或setTimeout
将来发生一些事情。
但是一旦用户离开您的页面,这些计时器将被取消 - 整个内容将被卸载。
答案 3 :(得分:0)
您可以使用:
setTimeout(alert('After 10 secs'),10000);
答案 4 :(得分:0)
如果用户访问同一标签中的其他网站,则表示运气不佳;一旦你的网页关闭,javascript就会死掉。
但是,如果用户只是访问您的网站上的其他网页,那么您很幸运。您可以按照以下方式执行此操作...但它需要对您的网站进行基本的重新设计。你必须使用一个框架来包装XHR(XML HTTP请求)中的所有链接点击并用新数据替换页面,让你觉得你点击了链接(你是这样,但浏览器永远不会刷新页)。这可以使用iframe来完成。这就是GMail的工作原理。
您可以自己编写这样的框架代码,但是最好使用一个具有URL重写支持来伪造历史记录的框架(否则您的网站将不能很好地处理用户历史记录)。
要回答有关“每10分钟一次”的问题,请使用setInterval(myFunction, 10*60*1000)
(由于优化,某些浏览器可能会出现问题)。
答案 5 :(得分:0)
假设您使用服务器语言,可以在启动时设置会话变量(启动日期/时间),然后使用setInterval将当前时间与启动日期/时间进行比较。
答案 6 :(得分:0)
function callfunction () {
// do something
}
window.onload = function () {
// Initial function call
callfunction();
setInterval(function () {
// Invoke function every 10 minutes
callfunction();
}, 600000);
}
答案 7 :(得分:0)
您需要将状态保存在远程服务器中。
这是你的步骤:
javascript函数加载,无论何时何地加载。
加载时(javascript fn)使用UNIQUEID调用远程服务器,可以通过cookie或会话变量从登录用户ID中获取...无论如何。
你使用这样的UNIQUEID(通常是ajax)向服务器发送请求,你的服务器会告诉你这个进程是否必须重新开始,或者你应该避免它(以页面跳转为例或页面刷新)在使用相同登录的其他浏览器中,它取决于您的业务逻辑。)
来自step3的响应用于执行/初始化javascript加载器。