首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【兼容性】监听页面关闭发送请求

这个是前端兼容性系列内容 因为前端监控会在页面关闭的时候,发送一下日志,所以会涉及到监听页面关闭,之前我们只监听了一个beforeunload 来发送数据 但是我看了之后发现应该没有这么简单实现,前端总要写一些乱七八糟的兼容代码的啊...下面就来详细说说,本文分为 1、页面关闭动作 2、页面关闭事件 3、测试结论 4、兼容做法 5、页面关闭发送请求 亲身多次实验,but 数据仅供参考 页面关闭动作 我仔细想了想所有会导致页面关闭的动作...1、页面刷新 2、跳转页面 3、关闭tab 4、关闭浏览器 所以如果我要监听页面关闭,那么我必须要都兼容这些动作。...在页面关闭的时候发送请求,因为请求是异步的,所以大多数时候并不一定成功 使用同步的方式发送请求是可以,但是 会迫使用户代理延迟卸载文档,并使得下一个导航出现的更晚。...也要做好错误处理 我搜到一个开源库的sendBeacon兼容处理 https://github.com/miguelmota/Navigator.sendBeacon/blob/master/sendbeacon.js

4.7K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS监听中文输入

    在做第六个项目(根据输入框实时调用AJAX古诗匹配)时,当我们输入中文拼音,还在拼音字符状态未选择成中文时,一直在执行我编写的事件监听处理函数(当输入框里的值有变化时执行此函数, 调用AJAX在页面显示数据里包含这些字的古诗...="this_input" placeholder="中文输入未完成时不执行事件" /> 下面代码不执行 console.log('当前输入:' + $(this).val()); //此处执行AJAX请求判断请求的数据中有没有包含输入的这些字的古诗...false); console.log('完成中文输入'); }); 当我们开始进行input的输入改变了input框里的值时,js...会监听到input propertychange事件, 执行判断(一开始时$(this).prop('cnStart')的值我们没有定义,为undefined, 在监听了compositionstart

    9.5K20

    tomcat请求处理分析(四) 监听请求轮询处理

    1.1.1.1  startInternal方法 这个方法是核心的启动方法,目前理解主要做了两件事情,第一件是创建轮询线程,即具体的读取线程,它是进行具体的处理,第二个是创建创建监听请求线程,它是等待请求...oomParachuteData==null)checkParachute(); } stopLatch.countDown(); } 1.1.1.1.2     Acceptor 这是一个接受请求的线程...//计数+1,达到最大值则等待 SocketChannel socket = null;                 try { //ServerSocketChannel 一个阻塞监听等待请求...paused) { //将请求连接放入队列等待处理 if (!...Poller类的register方法,其代码如下:在前面设置了一些基本属性,然后调用addEvent唤醒对应的选择器,这个selector实例是Poller对象的一个成员变量,对应的非阻塞过程在run方法,所以监听请求世实际还是在

    1.5K80

    javascript如何监听页面刷新和页面关闭事件

    在我们的日常生活中,时常遇到这么一种情况,当我们在点击一个链接、关闭页面、表单提交时等情况,会提示我们是否确认该操作等信息。...(因为,unbeforeunload()是在页面刷新之前触发的事件,而onubload()是在页面关闭之后才会触发的)。 unbeforeunload()事件可以禁止onunload()事件的触发。...onunload()事件是无法阻止页面关闭的。...浏览器的兼容 onunload: IE6,IE7,IE8 中 刷新页面、关闭浏览器之后、页面跳转之后都会执行; IE9 刷新页面 会执行,页面跳转、关闭浏览器不能执行; firefox(包括firefox3.6...) 关闭标签之后、页面跳转之后、刷新页面之后能执行,但关闭浏览器不能执行; Safari 刷新页面页面跳转之后会执行,但关闭浏览器不能执行; Opera、Chrome 任何情况都不执行。

    12.4K30

    监听页面一样监听戈多的动态

    如果 戈戈 与 狄狄 像我们监听页面元素变化那样监听戈多的动态,是不是就不会出现空欢喜的状态?是不是就不用等得那么辛苦?是不是甚至可以主动去寻找戈多? ?...说起监听页面元素变化,那么你可知道有哪些方法可以实现这个功能?...caniuse 本来鱼头我也不知道有这属性,但是最近在工作上遇到了需要监听页面元素变动的场景,然后就了解到了这个API。 于是鱼头便看了文档,发现是个好牛逼的API。 ? 所以这到底是个啥?...:监听目标以及其后代的变化; attributeOldValue:监听目标属性变化前的具体值; characterDataOldValue:监听目标数据变化前的具体值; attributeFilter:...如何监听戈多的位置? 下面我们就通过实际的代码来监听戈多的位置变化。 效果还是如同上图。

    1.7K20

    JavaScript 页面可见性-监听用户离开页面-visibilitychange 事件

    JavaScript监听用户离开页面-visibilitychange visibilitychange 事件触发原理 用户离开或者回到指定页面,document.visibilityState 属性发生变化...就会触发 visibilitychange 事件 因此,可以通过监听这个事件跟踪页面可见性的变化, 补充:document.visibilityState 属性 在 HTML5 中,文档对象...prerender:表示文档处于预渲染状态,即当前页面正在被预先加载并渲染,但尚未成为当前活动页面。 document.visibilityState属性是为了提高页面性能和节省资源而引入的新功能。...在过去,开发人员通常会在页面上运行许多 JavaScript 动画或视频播放等操作,这些操作会消耗大量的 CPU、GPU 或网络带宽资源,从而影响页面的性能和响应速度。...通过监视visibilityState属性,可以在用户切换选项卡或最小化窗口时暂停或恢复某些页面活动(如动画或视频播放)等操作,从而优化页面性能和用户体验。

    1.2K30

    mraid页面事件监听避免这样写

    在工作中,用到了 mraid.js 库,其中封装了事件监听逻辑,代码如下:var EventListeners = function (event) { this.event = event...out.push("|", id, "|") } } return out.join("") } };其中事件监听回调增加逻辑...,是根据回调函数转为 String 之后来存储和判断的,当我们这样写// mraid 监听页面是否展示function onSdkReady(fn) { if (mraid.isViewable(...fn && onSdkReady(fn); } } else { fn && fn(); }}原本我们想要封装下 mraid viewableChange 事件监听的逻辑...,执行不同的回调函数,但是实际我们使用了同一个回调函数,通过在同一份回调函数中传参不同的方法来实现,结果只能第一次事件监听生效,后续监听的方法无法生效。

    82640
    领券