在
背景:
我想在JavaScript代码的
据我所知,这种类型的调用在功能上与
显然,根据规范(重点在于我),HTML
这准确吗?
beforeunload
处理程序的上下文中,fetch(keep-alive: true)
和设置img
标签的src
属性之间的功能差异是什么?这两者中哪一个是进行GET请求的首选方法?背景:
我想在JavaScript代码的
beforeunload
处理程序中发送HTTP GET请求。 Navigator.sendBeacon
的文档讨论了它在此用例中的优点,但是
显然,几年前有很多请求要求此类功能,这导致使用sendBeacon()方法不提供自定义请求方法的能力
fetch()
,浏览器内部调用的方法sendBeacon
,并设置一些特定的标志来解决unload
请求问题的建议:
需要对这些请求进行非默认设置的应用程序应使用带有保持活动标志设置为true的FETCH API
fetch(url, {
method: ...,
body: ...,
headers: ...,
credentials: 'include',
mode: 'cors',
keep-alive: true,
})
据我所知,这种类型的调用在功能上与
Navigator.sendBeacon
等效,关键设置是keep-alive: true
。显然,根据规范(重点在于我),HTML
<img>
标签也使用keep-alive: true
。
我理解这份文档的意思是,在请求有一个相关的保持活动标志...这可以用于允许请求超过环境设置对象的生存期,例如,navigator.sendBeacon和HTML img元素设置此标志
img
元素的src
属性上进行GET
请求相当于使用keep-alive: true
调用fetch()
,这本身就相当于调用sendBeacon
(如果sendBeacon
能够发出GET
请求)。这准确吗?
img.src
与sendBeacon
之间的关系是什么,特别是在页面卸载期间keepalive
及其有用性方面的关系? - Emmett Butlerimg.src
和sendBeacon
在beforeunload
处理程序的上下文中确实是功能等效的。请明确确认并编辑您的答案。 - Emmett Butler