Execute a http request before page reload(在页面重新加载之前执行http请求)
问题描述
我正在使用Reaction应用程序,并且希望在用户尝试关闭该页或重新加载该页时销毁该会话。
我尝试的内容:
- window.onbepreunload=()=>;true:这将提供一个默认提示符,其中可能包含自定义消息。
- 提示(反应路由器):未捕获页面重新加载
- 通过EventListener使用生效
useEffect(() => {
window.addEventListener("beforeunload", function(evt) {
// Cancel the event (if necessary)
evt.preventDefault();
axios.get('url/destroy').then(res=> evt.returnValue = '';)
});
}, []);
面临的问题:请求被取消。
我尝试在响应http调用的超时时间内添加evt.returValue=‘’。但它也没有起作用。实现相同或相同目的的任何解决方法,即在页面重新加载/关闭时进行http调用。
提前谢谢。
更新1:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"> useEffect(() => {
window.addEventListener("beforeunload", (e) =>
alertUser(e, cookies.get("env"))
);
}, []);
const alertUser = async (e, tempBool) => {
e.preventDefault();
if (tempBool) {
let blob = new Blob(
[
JSON.stringify({
data: "data",
}),
],
{ type: "application/json" }
);
navigator.sendBeacon(
"ur/destroy_session",
blob
);
e.returnValue = "";
} else {
e.returnValue = "";
}
};
我想根据某个Cookie值发送请求。
在本例中,当按下重新加载和type=xhr时,使用type=ping调用该请求
如何在重新加载时仅允许http调用? 想知道服务工作者在这里是否有用,因为他们在后台线程中运行。我还没有尝试过,但值得一试。 这篇关于在页面重新加载之前执行http请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!推荐答案
navigator.serviceWorker.register('serviceWorker.js');
window.onunload = function() {
navigator.serviceWorker.controller.postMessage({
type: 'closeWindow'
});
};
self.onmessage = function(event) {
if (event.data.type === 'closeWindow') {
}
}
本文标题为:在页面重新加载之前执行http请求
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Fetch API 如何获取响应体? 2022-01-01