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请求
基础教程推荐
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 从快速中间件中排除路由 2022-01-01
