在webpack开发服务器中运行时忽略页面导航确认对话框

时间:2018-10-26 12:19:02

标签: webpack browser webpack-dev-server

我正在使用webpack开发服务器进行项目。该项目的某些状态会提示用户进行确认,例如:

window.onbeforeunload = () => {
  if (someCondition) {
    return true;
  }
};

这样可以使刷新时出现提示,也在webpack开发服务器检测到代码更改时出现,这很不方便。

当webpack开发服务器请求刷新时,是否有某种方法可以禁用确认?

1 个答案:

答案 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中出错。 >