Gmail 是如何创建这个自定义提示对话框的?

How does Gmail create this custom prompt dialog box?

有时,当我尝试在打开多个选项卡的情况下关闭 Gmail 时,会出现如下所示的 JS prompt function-style 对话框:

据我所知,在使用 JS prompt 函数时,无法自定义用于按钮等的文本。
此外,这似乎是一个真正的对话框(与某些 JS-created 模态相反),因为您无法与屏幕的其余部分交互或拉出元素检查器等,直到您对对话框进行操作。

Gmail 团队是如何做到这一点的?
他们是否可以访问我们其他人不知道的一些未记录的 functions/methods?

谢谢。

您正在寻找 window.onbeforeunload。它允许您在用户离开之前警告他们。

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};

请注意,许多浏览器会忽略 return 值而只显示默认消息,因为它通常被滥用以在诈骗网站上显示 "WAIT! BUY OUR SPAMMY PRODUCT FOR 50% LESS!"。