javascript - 如果未单击页面,为什么 onbeforeunload 不会触发?
问题描述
我只是想知道为什么会这样?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>close</title>
</head>
<body>
<h1>onbeforeunload</h1>
<script>
console.log("loaded");
window.onbeforeunload = confirmExit;
function confirmExit(){
console.log("closed");
return false;
}
</script>
</body>
</html>
如果您将此代码复制并保存为 .html 文件并在浏览器中运行它,并且不单击页面内部并关闭选项卡或浏览器,则 onbeforeunload 不会触发!
但是,如果您在页面内单击一次,然后尝试关闭页面,则一切正常。
解决方案
这是记录在案的行为:
注意:为了防止不需要的弹出窗口,一些浏览器不会显示在
beforeunload
事件处理程序中创建的提示,除非页面已经被交互过;有些根本不显示它们。有关特定浏览器的列表,请参阅Browser_compatibility部分。
推荐阅读
- c++ - 为什么 std::size 的结果不是编译时间或不是 size_t?
- java - 循环遍历 ArrayList
- android - 如何在 MediaMuxer android 上更改分辨率
- redis - 如何为 CKAN (dockerized) 配置 ckanext-archiver 插件以使其工作?
- apache-spark - hive 如何使用条件语句根据结果执行不同的查询
- c# - 如何计算水晶报表Top 6科目的平均分?
- c++ - C++ 如何用不同位置的新字符串填充静态字符串数组?
- typescript - 通用打字稿:来自 keyof T 值的通用类型
- mongodb - 如何在mongodb中使用聚合
- python - 如何访问 span 元素并更改它的值