如何判断用户浏览的是否是当前页面?

道生壹 2014-08-07 01:25:26
有三个页面,都有定时任务,用户在浏览其中一个页面的时候需要暂停其余两个页面的定时任务,并开启当前页面的定时任务,现在不清楚如何判断用户浏览的是当前页,需要考虑到浏览器兼容的情况,请专业人士给个代码提示。
...全文
577 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meeleem 2015-10-08
  • 打赏
  • 举报
回复
function handleVisibilityChange() { if (document[hidden]) { //当浏览器焦点离开当前页面时执行 } } if (typeof document.addEventListener !== "undefined" || typeof document[hidden] !== "undefined") { document.addEventListener(visibilityChange, handleVisibilityChange, false); }
外包吧 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 u013472677 的回复:
给每个页面加个隐藏域 如:
<input type="hidden" id="pageInfo" value="page1" />
通过hidden的value 去判断当前页面 个人感觉这种方式还是比较简洁的 楼下继续提点更好方案
这样肯定不行,我要是有无数页面你怎么去写死判断
道生壹 2014-08-12
  • 打赏
  • 举报
回复
引用 16 楼 functionsub 的回复:
[quote=引用 14 楼 zhpklove 的回复:] [quote=引用 12 楼 functionsub 的回复:]
var i=0,timer;
window.onfocus = function(){timer = setInterval(function(){i++;console.log(i)},1000)};
window.onblur = function(){clearInterval(timer)};
在控制台随便试了一下,不知道能不能满足楼主你的需求。3个页面都放这些代码,3个页面处理不一样的任务,要改的就是setInterval里面要执行的任务。
在用跳转到改页面的时候貌似不会激发window.onfocus[/quote] 测试了一下,,没什么问题啊。[/quote] 还有其他方法么,这个焦点事件在窗口模式下不好用,在页签下的时候偶尔会不执行。
functionsub 2014-08-07
  • 打赏
  • 举报
回复
引用 14 楼 zhpklove 的回复:
[quote=引用 12 楼 functionsub 的回复:]
var i=0,timer;
window.onfocus = function(){timer = setInterval(function(){i++;console.log(i)},1000)};
window.onblur = function(){clearInterval(timer)};
在控制台随便试了一下,不知道能不能满足楼主你的需求。3个页面都放这些代码,3个页面处理不一样的任务,要改的就是setInterval里面要执行的任务。
在用跳转到改页面的时候貌似不会激发window.onfocus[/quote] 测试了一下,,没什么问题啊。
ls262426433 2014-08-07
  • 打赏
  • 举报
回复
看过……
道生壹 2014-08-07
  • 打赏
  • 举报
回复
引用 12 楼 functionsub 的回复:
var i=0,timer;
window.onfocus = function(){timer = setInterval(function(){i++;console.log(i)},1000)};
window.onblur = function(){clearInterval(timer)};
在控制台随便试了一下,不知道能不能满足楼主你的需求。3个页面都放这些代码,3个页面处理不一样的任务,要改的就是setInterval里面要执行的任务。
在用跳转到改页面的时候貌似不会激发window.onfocus
成都-狗蛋儿 2014-08-07
  • 打赏
  • 举报
回复
引用 11 楼 yukon12345 的回复:
[quote=引用 10 楼 gdf87521 的回复:] [quote=引用 9 楼 yukon12345 的回复:] 没啥困难的,每个窗口生成一个唯一id,比如时间戳之类的,点击window后绑定一个ajax post发送id到服务器,, 类似下面的原理 jquery:
$(function(){
            $(window).bind("click",function(){
                alert("hhh")
            })
        })
唯一要求是必须点击窗口内容。 另外两个窗口的暂停同样需要服务器的反馈,就是说所有窗口必须定时放松请求看看是否需要停止计时。
每个窗口生成一个唯一id???请问这个怎么生成?这个唯一又如何去判定?就算是生成,总得有个地方存,你才可以去跟之前的做对比,是么?[/quote]只能呵呵了。。[/quote] 呵呵复呵呵
functionsub 2014-08-07
  • 打赏
  • 举报
回复
var i=0,timer;
window.onfocus = function(){timer = setInterval(function(){i++;console.log(i)},1000)};
window.onblur = function(){clearInterval(timer)};
在控制台随便试了一下,不知道能不能满足楼主你的需求。3个页面都放这些代码,3个页面处理不一样的任务,要改的就是setInterval里面要执行的任务。
步慢生错 2014-08-07
  • 打赏
  • 举报
回复
引用 10 楼 gdf87521 的回复:
[quote=引用 9 楼 yukon12345 的回复:] 没啥困难的,每个窗口生成一个唯一id,比如时间戳之类的,点击window后绑定一个ajax post发送id到服务器,, 类似下面的原理 jquery:
$(function(){
            $(window).bind("click",function(){
                alert("hhh")
            })
        })
唯一要求是必须点击窗口内容。 另外两个窗口的暂停同样需要服务器的反馈,就是说所有窗口必须定时放松请求看看是否需要停止计时。
每个窗口生成一个唯一id???请问这个怎么生成?这个唯一又如何去判定?就算是生成,总得有个地方存,你才可以去跟之前的做对比,是么?[/quote]只能呵呵了。。
成都-狗蛋儿 2014-08-07
  • 打赏
  • 举报
回复
引用 9 楼 yukon12345 的回复:
没啥困难的,每个窗口生成一个唯一id,比如时间戳之类的,点击window后绑定一个ajax post发送id到服务器,, 类似下面的原理 jquery:
$(function(){
            $(window).bind("click",function(){
                alert("hhh")
            })
        })
唯一要求是必须点击窗口内容。 另外两个窗口的暂停同样需要服务器的反馈,就是说所有窗口必须定时放松请求看看是否需要停止计时。
每个窗口生成一个唯一id???请问这个怎么生成?这个唯一又如何去判定?就算是生成,总得有个地方存,你才可以去跟之前的做对比,是么?
步慢生错 2014-08-07
  • 打赏
  • 举报
回复
没啥困难的,每个窗口生成一个唯一id,比如时间戳之类的,点击window后绑定一个ajax post发送id到服务器,, 类似下面的原理 jquery:
$(function(){
            $(window).bind("click",function(){
                alert("hhh")
            })
        })
唯一要求是必须点击窗口内容。 另外两个窗口的暂停同样需要服务器的反馈,就是说所有窗口必须定时放松请求看看是否需要停止计时。
道生壹 2014-08-07
  • 打赏
  • 举报
回复
在线等答案
道生壹 2014-08-07
  • 打赏
  • 举报
回复
引用 5 楼 gdf87521 的回复:
这个问题有点意思。。。看了你们的回复,我觉得这个问题光靠Web方面的技术还不能实现。。。可能会用到一些浏览器相关的API+Web技术知识才能达到楼主的意图。
是的,我也是第一次遇到该需求,但并不认为这个功能不可实现,肯定还是有办法的
qcxl 2014-08-07
  • 打赏
  • 举报
回复
引用 5 楼 gdf87521 的回复:
这个问题有点意思。。。看了你们的回复,我觉得这个问题光靠Web方面的技术还不能实现。。。可能会用到一些浏览器相关的API+Web技术知识才能达到楼主的意图。
同意楼上观点,我表示误会楼主意思了
成都-狗蛋儿 2014-08-07
  • 打赏
  • 举报
回复
这个问题有点意思。。。看了你们的回复,我觉得这个问题光靠Web方面的技术还不能实现。。。可能会用到一些浏览器相关的API+Web技术知识才能达到楼主的意图。
道生壹 2014-08-07
  • 打赏
  • 举报
回复
引用 3 楼 u013472677 的回复:
[quote=引用 2 楼 zhpklove 的回复:] [quote=引用 1 楼 u013472677 的回复:] 给每个页面加个隐藏域 如:
<input type="hidden" id="pageInfo" value="page1" />
通过hidden的value 去判断当前页面 个人感觉这种方式还是比较简洁的 楼下继续提点更好方案
不理解你的想法,况且用户可以打开三个地址相同的页面...[/quote] 我也不太理解你这三地址开同页面是啥想法 我上面提得只是通过hidden值判断当前在哪个页面,并不涉及地址 [/quote] 我开三个页面都是baidu.com 怎么判断这三个页面有一个是我正在浏览的?
qcxl 2014-08-07
  • 打赏
  • 举报
回复
引用 2 楼 zhpklove 的回复:
[quote=引用 1 楼 u013472677 的回复:] 给每个页面加个隐藏域 如:
<input type="hidden" id="pageInfo" value="page1" />
通过hidden的value 去判断当前页面 个人感觉这种方式还是比较简洁的 楼下继续提点更好方案
不理解你的想法,况且用户可以打开三个地址相同的页面...[/quote] 我也不太理解你这三地址开同页面是啥想法 我上面提得只是通过hidden值判断当前在哪个页面,并不涉及地址
道生壹 2014-08-07
  • 打赏
  • 举报
回复
引用 1 楼 u013472677 的回复:
给每个页面加个隐藏域 如:
<input type="hidden" id="pageInfo" value="page1" />
通过hidden的value 去判断当前页面 个人感觉这种方式还是比较简洁的 楼下继续提点更好方案
不理解你的想法,况且用户可以打开三个地址相同的页面...
qcxl 2014-08-07
  • 打赏
  • 举报
回复
给每个页面加个隐藏域 如:
<input type="hidden" id="pageInfo" value="page1" />
通过hidden的value 去判断当前页面 个人感觉这种方式还是比较简洁的 楼下继续提点更好方案

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧