Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onBeforeUnload即使在函数不返回任何内容时也会创建提示_Javascript_Reactjs_Google Chrome_Internet Explorer_Firefox - Fatal编程技术网

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谢谢你,看来这一切都花了。你应该把它作为一个真实的答案贴出来,这样我才能把它标记为正确的