在beforeunload事件上显示什么元素?

问题描述

我使用 on('beforeunload')用户尝试关闭我的页面标签时触发提示。我认为这是一个系统警报,它是 Fragment Result API guide

这是什么类型的元素,是否可以在我的应用程序中的其他地方使用这种样式作为警报或提示?我找不到任何关于它的信息。 alertprompt 看起来完全不同。

这是 Safari 上的东西:

really neat

这也是 Safari 的“认”警报,丑陋 10 倍:

this is the thing

解决方法

promptalert 对话框是浏览器模式。我能想到的所有浏览器实现都不会在 HTML 页面中显示模式,而是作为主窗口顶部的单独 GUI 对话;因此模态在文档范围之外,不能被样式定位。

https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#simple-dialogs 中的 HTML 动态规范仅声明,在调用 promptalert 时,消息应该是可配置的。如果任何浏览器实现了为警报模式配置样式的能力,这将超出规范和非标准功能。

简而言之:规范不包括对话的样式配置,也没有浏览器供应商实施它。


也许您可以在页面内的所有其他元素之上创建一个具有所需样式的固定元素,并使用函数来显示/隐藏该元素而不是内置的 alert()

function alert2( msg ) {
    const modal = document.getElementById( 'modal' )
    modal.innerHTML = typeof msg === 'string' ? msg : 'Alert!!'
    modal.style.display = 'block'
}

...

alert2( 'This is an alert' )