webpack - 在 webpack 开发服务器内部运行时忽略页面导航确认对话框
问题描述
我正在使用 webpack 开发服务器开发一个项目。该项目有某些状态会提示用户确认,如下所示:
window.onbeforeunload = () => {
if (someCondition) {
return true;
}
};
这使得刷新时会出现提示,当 webpack 开发服务器检测到代码更改时也会出现提示,这是相当不方便的。
当 webpack 开发服务器请求刷新时,是否有某种方法可以禁用确认?
解决方案
webpack 热重载在窗口中暴露了 webpackHotUpdate 函数,所以你可以滥用它。
有这样的东西。确保它在 webpack 创建函数后执行。
var _webpackHotUpdate = window.webpackHotUpdate;
var _hotUpdateFired = false;
window.webpackHotUpdate = function() {
_hotUpdateFired = true;
return _webpackHotUpdate.apply(window, arguments)
};
这添加了一个全局窗口变量,该变量在调用时切换为 true。然后在您的处理程序中,您只有
window.onbeforeunload = () => {
if (someCondition && !(typeof _hotUpdateFired !== 'undefined' && _hotUpdateFired)) {
return true;
}
};
全局窗口变量是一个肮脏的把戏,但我想说这对开发来说很好。我已经将它包装在 typeof 检查中,这样您就可以将第一个代码块包装在“if dev”条件下,而当您没有此变量时,第二个代码块不会在 prod 中出错。
推荐阅读
- java - Spring Data Repository - 方法签名
- c# - 将 ASP.NET Core 2.1 和 Angular 6 项目发布到 Azure
- ubuntu - remmina 默认的 ssh 选项是什么?
- php - Laravel 复制数据到其他表,检查是否存在
- node.js - bot builder sdk nodejs builder.Prompts.choice 问题
- c# - https 协议的 Pechkin dll(htmltopdf 转换)样式问题
- android - 如何打开外部音乐播放器(例如 Pulsar、Retro Music Players)并播放我从列表视图中选择的歌曲?
- php - Xampp安装报错:错误运行cmd.exe/C start/MIN net
- python-3.x - 为什么这里会出现错误'行继续字符后的意外字符'?
- wordpress - 在 Wordpress REST Api 中使用 _embed 挂钩应用缓存