Javascript onBeforeUnload即使在函数不返回任何内容时也会创建提示
我在我的网站上有一个页面可以输入一些值。以后可以保存和修改这些内容。我希望在用户试图离开页面时出现提示,但仅当存在未保存的数据时才会出现提示。我有代码来确定某个值是否已保存或工作不正常。在我分配给Javascript onBeforeUnload即使在函数不返回任何内容时也会创建提示,javascript,reactjs,google-chrome,internet-explorer,firefox,Javascript,Reactjs,Google Chrome,Internet Explorer,Firefox,我在我的网站上有一个页面可以输入一些值。以后可以保存和修改这些内容。我希望在用户试图离开页面时出现提示,但仅当存在未保存的数据时才会出现提示。我有代码来确定某个值是否已保存或工作不正常。在我分配给window.onBeforeUnload的函数中,如果有未保存的值,它应该返回一个字符串;如果没有输入任何内容/保存了所有内容,它应该什么也不返回。但是在Firefox和InternetExplore中,即使函数不返回任何内容(未定义),也会出现关于未保存更改的提示警告。铬很好用 我尝试通过addEv
window.onBeforeUnload
的函数中,如果有未保存的值,它应该返回一个字符串;如果没有输入任何内容/保存了所有内容,它应该什么也不返回。但是在Firefox和InternetExplore中,即使函数不返回任何内容(未定义),也会出现关于未保存更改的提示警告。铬很好用
我尝试通过addEventListener
将事件附加到窗口,结果相同。我还删除了evt.preventDefault()
和evt.stopPropagation()
,它仍然出现。我已尝试将evt.returnValue
设置为null,并delete evt['returnValue']
,但它仍然出现
代码如下所示:
componentDidMount() {
window.onbeforeunload = this.warnUnsaved;
}
warnUnsavedRecords = (evt) => {
if (evt) {
evt.preventDefault();
evt.stopPropagation();
}
if (this._unsaved) {
return "There are unsaved records.";
}
return;
}
即使添加
console.log
也证明它正在到达返回
,但它仍然会发生。正常情况下,删除evt.preventDefault()代码>零件应足够。这至少在FF中适用。通常情况下,删除evt.preventDefault()代码>零件应足够。这至少在FF中对我有效。@Jb31谢谢你,看来这一切都花了。你应该把它作为一个真实的答案贴出来,这样我才能把它标记为正确的