我正在使用webpack开发服务器进行项目。该项目的某些状态会提示用户进行确认,例如:
window.onbeforeunload = () => {
if (someCondition) {
return true;
}
};
这样可以使刷新时出现提示,也在webpack开发服务器检测到代码更改时出现,这很不方便。
当webpack开发服务器请求刷新时,是否有某种方法可以禁用确认?
答案 0 :(得分:0)
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中出错。 >