首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

浏览器标签tab窗口切换时事件状态侦听

浏览器标签tab窗口切换时事件状态侦听 背景 项目中使用到了websocket,用户在浏览器窗口切换或者浏览器最下话后,websocket的状态有可能断开,且没有重试机制,所以想通过用户回到当前页面的时候...,系统能够自动刷新,重新连接socket 解决方法 通过添加浏览器的监听事件,判断用户是否离开了当前的页面。...visibilitychange', function() { var isHidden = document.hidden; if (isHidden) {//切离该页面时执行 alert("浏览器处于最小化状态了...location.reload(); //刷新页面 //window.location.reload() } }); document.visibilityState的值为: hidden(当浏览器最小化...、切换tab、电脑锁屏时) visible(用户正在查看当前页面时) prerender(文档加载离屏或者不可见) unloaded(当文档将要被unload时) 本文为joshua317原创文章,转载请注明

2.2K40

浏览器跨 Tab 窗口通信原理及应用实践

所谓多窗口下进行互相通信,是指在浏览器中,不同窗口(包括不同标签页、不同浏览器窗口甚至不同浏览器实例)之间进行数据传输和通信的能力。...SharedWorker API 是 HTML5 中提供的一种多线程解决方案,它可以在多个浏览TAB 页面之间共享一个后台线程,从而实现跨页面通信。...与其他 Worker 不同的是,SharedWorker 可以被多个浏览TAB 页面共享,且可以在同一域名下的不同页面之间建立连接。...这样,消息就可以在不同的浏览TAB 页面之间传递。 最后,通过调用 port.start() 启动端口对象,使其开始接收消息。...简单对比一下: SharedWorker 通过在多个Tab页面之间共享相同的 Worker 实例,方便地共享数据和状态,SharedWorker 需要多定义一个 shared-worker.js; Broadcast

39710

浏览tab页的通信解决方案尝试

目标 当前页面需要与当前浏览器已打开的的某个tab页通信,完成某些交互。其中,与当前页面待通信的tab页可以是与当前页面同域(相同的协议、域名和端口),也可以是跨域的。...页通信,兼容性 通过caniuse网站查询storage事件发现,IE的浏览器支持非常的不友好,caniuse使用了“completely wrong”的形容词来表述这一程度。...这种情况才是最急需解决的问题,如何实现两个没有任何关系的tab页面通信,这需要一些技巧,而且需要有同时修改这两个tab页面的权限,否则根本不可能实现这两个tab页的能力。...如果tab A发消息给tab B,首先tab A通过postMessage消息发送给iframe A(tab A可以获取到iframe A的window对象iframe.contentWindow)...至此,tab A的消息走通了所有链路,成功抵达tab B。 反方向发送消息同样的道理,这里就不在详细说明。

2.1K40

判断用户是否切换浏览tab或切换任务Page Visibility

上面这些情况,都会导致手机将浏览器进程切换到后台,然后为了节省资源,可能就会杀死浏览器进程。 以前,页面被系统切换,以及系统清除浏览器进程,是无法监听到的。...其中,hidden状态和visible状态是所有浏览器都必须支持的。...prerender状态只在支持”预渲染”的浏览器上才会出现,比如 Chrome 浏览器就有预渲染功能,可以在用户不可见的状态下,预先把页面渲染出来,等到用户要浏览的时候,直接展示渲染好的网页。...浏览器最小化。 浏览器没有最小化,但是当前页面切换成了背景页。 浏览器将要卸载(unload)页面。 操作系统触发锁屏屏幕。 可以看到,上面四种场景涵盖了页面可能被卸载的所有情况。...页面可见时,用户关闭 Tab 页或浏览器窗口。 页面可见时,用户在当前窗口前往另一个页面。 页面不可见时,用户或系统关闭浏览器窗口。 这三种情况,都会触发visibilitychange事件。

3.4K41

js判断浏览器信息

本示例讲述了关于js获取各种浏览器信息,例如微信浏览器,qq内置浏览器,电脑火狐浏览器,qq浏览器等等 判断手机相关浏览器 if (browser.versions.mobile) { //判断是否是移动设备打开...ua.match(/QQ/i) == "qq") {       //在QQ空间打开   }        if(browser.versions.android){           //是否在安卓浏览器打开...  } } else {            //否则就是PC浏览器打开        } 浏览器信息汇总 var browser = {  versions: function () {   var... u = navigator.userAgent, app = navigator.appVersion;  return {   //移动终端浏览器版本信息    iPad: u.indexOf('iPad...') > -1, //是否iPad       iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器    trident: u.indexOf(

7.5K10

浏览器执行js原理

js任务循环机制中,为什么会有宏任务与微任务之分?...因此只要消息队列里有任务,JS执行主线程就会不断的执行消息队列里的任务。这便是js单线程执行js代码的简单原理,当然涉及的深的话,应该还要有IO线程,专门处理新加进来的任务,以及其它进程过来的任务。...鉴于这个属性,那js是如何处理高优先级的任务? js是如何处理高优先级的任务? 比如一个典型的场景,DOM节点的变化,增、删,改,如果页面上的一个输入框状态需要实时的映射到页面上。...但是这个模式有一个问题,就是如果当前的DOM变化非常的频繁,都去执行js任务的话,会导致当前在执行的js任务被延长,从而导致执行效率的下降;如果把这些任务添加到消息队列的尾部,则无法及时响应用户的操作。...这便是在js执行过程中为什么会有微任务与宏任务之分的原因。 文章转自 浏览器执行js原理 , https://www.xiaye0.com/articlejs?id=40

3.6K10

Tab Switcher 快捷Tab切换器

日常的办公和生活中,经常要用浏览器打开多个 Tab,并不停的来回切换,对于常常习惯打开数十个Tab的人来说,不经意中就浪费掉了海量的毛细时间。...结合本人自己的实践经验,特写了一款专门解决此问题,大幅提高Chrome工作效率的插件,不仅可以快速预览、搜索 Tab,更支持自定义拖拽工作、保存空间,将 Tab 成本降到最小。...Tab Switcher嵌入式全屏面板快速双击 shift 后即可像系统级任务切换面板一样,快速显示、预览当前所打开的所有Window、Tab,一目了然、快速定位。...自由布局支持 4 种布局,适合不同的屏幕大小和近视习惯多关键词快捷搜索通过关键词模糊匹配,快速过滤多个目标 Tab,专注于当前的工作内容,而无需迷乱于数十个 Tab 中。...跨窗口拖拽、排序将相关的 Tab 有序放在相邻的地方是良好的习惯,但Chrome自身的Tab排序和切换并不灵活,跨窗口处理更为繁琐。

2.7K10
领券