Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 仅使用Edge而不使用Chrome和Firefox退出页面的消息_Javascript_Google Chrome_Firefox_Onunload - Fatal编程技术网

Javascript 仅使用Edge而不使用Chrome和Firefox退出页面的消息

Javascript 仅使用Edge而不使用Chrome和Firefox退出页面的消息,javascript,google-chrome,firefox,onunload,Javascript,Google Chrome,Firefox,Onunload,我目前在一个网站上工作,有一个带有表单的页面。当用户试图离开此页面时,我希望显示一条确认消息。我就是这样做的: 在JSP文件中(网站由Struts2创建): 如果您尝试重新加载页面或单击某个链接,则此操作正常,但如果您尝试输入表单,然后单击浏览器的“后退”按钮,Firefox和Chrome将返回上一页而不显示消息。这里唯一的好人是Edge,他按预期显示消息 此外,如果我在尝试通过链接离开页面或尝试重新加载页面后单击“上一步”按钮,则消息将显示在所有浏览器中 我通常不做软件开发,这也许可以解释为什

我目前在一个网站上工作,有一个带有表单的页面。当用户试图离开此页面时,我希望显示一条确认消息。我就是这样做的:

在JSP文件中(网站由Struts2创建):

如果您尝试重新加载页面或单击某个链接,则此操作正常,但如果您尝试输入表单,然后单击浏览器的“后退”按钮,Firefox和Chrome将返回上一页而不显示消息。这里唯一的好人是Edge,他按预期显示消息

此外,如果我在尝试通过链接离开页面或尝试重新加载页面后单击“上一步”按钮,则消息将显示在所有浏览器中

我通常不做软件开发,这也许可以解释为什么我不明白为什么这三种浏览器在这里的行为不一样。所以,欢迎你们的帮助


编辑:我不想检测“后退”按钮。我只想让浏览器在用户离开页面时显示确认消息,如果他单击“上一步”按钮,现在不会出现这种情况

尝试使用以下代码(我已经在Chrome、Microsoft Edge和Firefox上进行了测试,它们都显示确认):


var=false;
var setFormSubmitting=function(){formSubmitting=true;};
window.onload=函数(){
window.addEventListener(“预卸载前”,函数(e){
如果(提交表格){
返回未定义;
}
var confirmationMessage='看起来您正在编辑某些内容。'
+“如果您在保存之前离开,您所做的更改将丢失。”;
(e | | window.event).returnValue=confirmationMessage;//Gecko+IE
返回确认消息;//Gecko+Webkit、Safari、Chrome等。
});
};
乌萨里奥:
森哈:

更多详细信息,请参阅。

可能是一种更现代的方式,但YMMV在获得自定义提示时会显示。好的,现在它可以在Chrome和Edge上使用。但是Firefox仍然没有显示这样的信息:(你可以用“旧方法”(这是最简单的):
”̀可能重复的
<body onbeforeunload="return onUnload()">
function onUnload() {
        var confirmationMessage = 'It looks like you have been editing something. '
                                + 'If you leave before saving, your changes will be lost.';

        if (formSubmitting) {
            return undefined;
        }
        return confirmationMessage;
    }
<script>
    var formSubmitting = false;
    var setFormSubmitting = function () { formSubmitting = true; };

    window.onload = function () {
        window.addEventListener("beforeunload", function (e) {
            if (formSubmitting) {
                return undefined;
            }

            var confirmationMessage = 'It looks like you have been editing something. '
                + 'If you leave before saving, your changes will be lost.';

            (e || window.event).returnValue = confirmationMessage; //Gecko + IE
            return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.
        });
    };
</script>
<form method="post" onsubmit="setFormSubmitting()">
    <table>
        <tr>
            <td>
                Usuario:
            </td>
            <td>
                <input name="Usuario" id="" style="height:22px; width:102px" type="text" maxlength="11" value="aaa" />
            </td>
        </tr>
        <tr>
            <td>
                Senha:
            </td>
            <td>
                <input name="Senha" id="" style="height:22px; width:102px" type="password" maxlength="10" value="123456" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input name="Submit" id="" type="button" value="Submit" onclick="javascript: alert(document.getElementsByName('Usuario')[0].value + ' - ' + document.getElementsByName('Senha')[0].value);" />
            </td>
        </tr>
    </table>
</form>