在处理程序的上下文中,设置标签属性和设置标签beforeunload
的功能有什么区别,其中哪一种是发出 GET 请求的首选方法?fetch(keep-alive: true)
src
img
背景:
beforeunload
我想在 JavaScript 代码的处理程序中发送 HTTP GET 请求。Navigator.sendBeacon
的文档讨论了它对于这个用例有多好,但是
sendBeacon() 方法不提供自定义请求方法的能力
显然,几年前有很多对此类功能的请求,最终推荐使用fetch()
,内部调用的浏览器方法sendBeacon
,并设置了一些特定的标志来解决unload
请求问题:
需要对此类请求进行非默认设置的应用程序应使用
FETCH
API 并将 keep-alive 标志设置为 true
fetch(url, {
method: ...,
body: ...,
headers: ...,
credentials: 'include',
mode: 'cors',
keep-alive: true,
})
据我所知,这种类型的调用在功能上等同于Navigator.sendBeacon
,关键设置是keep-alive: true
。
显然,HTML<img>
标签也 根据规范使用(强调我的):keep-alive: true
一个请求有一个相关联的keepalive标志...这可以用来允许请求比环境设置对象更长寿,例如navigator.sendBeacon和HTML img元素设置这个标志
我对本文档的理解是,通过元素的属性发出GET
请求在功能上等同于调用with ,它本身在功能上等同于调用(如果可以发出请求)。unload
img
src
fetch()
keep-alive: true
sendBeacon
sendBeacon
GET
这是准确的吗?