Javascript 如何检测移动浏览器何时返回已暂停的页面?
当浏览器在移动设备上失去焦点时,设备通常会停止加载页面的JavaScript执行,但保留页面 当用户稍后返回该页面时,浏览器将显示其先前加载的页面 当使用SignalR时,活动浏览器可以接受来自服务器的推送消息,当移动设备运行JavaScript时,这一点非常有效,但是,当页面暂停(由于浏览器变为非活动状态)时,将不再接收该页面的推送通知 这意味着,当我返回到一个已经不活动的页面时,它已过期。它错过了来自服务器的一些通知 由于来自服务器的消息是非连续的,并且可能包含各种更新数据,因此最好的方法似乎是在重新激活浏览器时强制刷新页面Javascript 如何检测移动浏览器何时返回已暂停的页面?,javascript,mobile,signalr,Javascript,Mobile,Signalr,当浏览器在移动设备上失去焦点时,设备通常会停止加载页面的JavaScript执行,但保留页面 当用户稍后返回该页面时,浏览器将显示其先前加载的页面 当使用SignalR时,活动浏览器可以接受来自服务器的推送消息,当移动设备运行JavaScript时,这一点非常有效,但是,当页面暂停(由于浏览器变为非活动状态)时,将不再接收该页面的推送通知 这意味着,当我返回到一个已经不活动的页面时,它已过期。它错过了来自服务器的一些通知 由于来自服务器的消息是非连续的,并且可能包含各种更新数据,因此最好的方法似
如何检测页面的重新激活以触发刷新?我还没有使用SignalR,但我希望任何JS客户端都有一个用于刷新的回调方法。这就是你想要强制刷新的地方。这样,每当移动客户端失去和恢复连接时,它也会刷新所有数据 如果重新连接事件不是选项,则可以尝试使用确定选项卡何时恢复可见性并强制刷新 试试这个():
函数handleVisibilityChange(){
if(document.hidden){
日志消息(“文档隐藏”);
}否则{
日志消息('文档可见。触发刷新');
}
}
功能日志消息(消息){
var d=新日期();
var timestamp=d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
var p=document.createElement('p');
p、 innerText=时间戳+'-'+消息;
文件.正文.附件(p);
}
文件。添加的监查人(“可视性变更”,可操作性变更);
logMessage('文档为'+Document.visibilityState+'。尝试最小化浏览器或更改选项卡')这些都是好主意。我已经在为信号器使用重新连接,但在移动浏览器的这种特殊情况下,事件不会被触发(即使浏览器已连接)-它可能正在进行连接而不是重新连接,但如果我在连接时刷新,这将是递归的。在浏览器未暂停的许多情况下,刷新页面可见性的选项B非常繁重,在切换选项卡(在桌面和移动设备上)时会导致页面刷新,这会导致不理想的用户体验波动。如果使用Signal的stateChanged事件,当移动浏览器最小化并恢复时,您应该能够看到连接发生了什么变化。它是否再次触发连接事件?