onbeforeunload 事件显示啥元素?

Posted

技术标签:

【中文标题】onbeforeunload 事件显示啥元素?【英文标题】:What element is being displayed onbeforeunload event?onbeforeunload 事件显示什么元素? 【发布时间】:2021-05-20 18:25:19 【问题描述】:

我使用on('beforeunload') 在用户尝试关闭我的页面的选项卡时触发提示。我认为这是一个系统警报,它是really neat。

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

这是 Safari 上的东西:

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

【问题讨论】:

这是来自客户端的内置对话框。这些内置对话框的样式是不可配置的。 【参考方案1】:

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' )

【讨论】:

以上是关于onbeforeunload 事件显示啥元素?的主要内容,如果未能解决你的问题,请参考以下文章

onbeforeunload 事件异常?

jQuery:如何使用 .on 事件检查多个元素

使用onbeforeunload事件检测窗口是否刷新或关闭 .

如何截获WebBrowser控件onbeforeunload事件

有啥方法可以在 iOS 设备的 Mobile Safari 上使用 window.onbeforeunload 吗?

从 Selenium 测试 onbeforeunload 事件