Javascript 在卸载事件之前传递自定义消息

Javascript 在卸载事件之前传递自定义消息,javascript,google-chrome,browser,firefox-browser-api,Javascript,Google Chrome,Browser,Firefox Browser Api,窗口的onbeforeuload属性可以设置为一个函数,该函数返回一个字符串,该字符串在对话框中显示给用户,以确认用户希望导航离开。这是为了防止用户在导航过程中丢失数据。不幸的是,它经常被用来欺骗用户 从Chrome51开始,自定义字符串将不再显示给用户。Chrome仍将显示一个对话框,以防止用户丢失数据,但其内容将由浏览器而不是网页设置 通过这一改变,Chrome将与Safari 9.1及更高版本以及Firefox 4及更高版本保持一致 window.addEventListener("bef

窗口的
onbeforeuload
属性可以设置为一个函数,该函数返回一个字符串,该字符串在对话框中显示给用户,以确认用户希望导航离开。这是为了防止用户在导航过程中丢失数据。不幸的是,它经常被用来欺骗用户

从Chrome51开始,自定义字符串将不再显示给用户。Chrome仍将显示一个对话框,以防止用户丢失数据,但其内容将由浏览器而不是网页设置

通过这一改变,Chrome将与Safari 9.1及更高版本以及Firefox 4及更高版本保持一致

window.addEventListener("beforeunload", function (e) {
    var confirmationMessage = 'Please Save or Submit changes before moving away from this page';
    confirmationMessage += 'If you leave before saving, your changes will be lost.';

    (e || window.event).returnValue = confirmationMessage; //Gecko + IE
    return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.       
});

在卸载事件之前是否有传递自定义消息的变通方法?

不,没有。如果有的话,那就违背了浏览器供应商所做更改的目的,呃?

在某些浏览器中可能存在部分解决方案。您不能更改对话框,但可以尝试在对话框出现之前更改页面内容,以显示一条粗体的大消息,用户将看到该消息

下面是一个简单的例子,它在Firefox中起作用,但在Chrome中不起作用:

window.addEventListener('beforeunload',函数(事件){
document.body.textContent=“如果单击“离开”,您将丢失数据!”;
document.body.style.paddingTop='40px';
document.body.style.fontSize='60px';
document.body.style.fontWeight='bold';
return event.returnValue='warning';
});