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请求
基础教程推荐
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01