codecamp

window属性:onbeforeunload

onbeforeunload属性

WindowEventHandlers.onbeforeunload事件处理程序属性包含在发送beforeunload时执行的代码。这个事件在窗口即将到达unload(卸载)其资源时触发。该文件仍然可见,并且该事件仍可取消。

注意:为了防止不需要的弹出窗口,一些浏览器不会显示在beforeunload事件处理程序中创建的提示,除非该页面已与之交互;有些根本不显示它们。

onbeforeunload属性语法

window.onbeforeunload = funcRef
  • funcRef是对函数或函数表达式的引用。
  • 该函数应该为Event对象的returnValue属性分配一个字符串值并返回相同的字符串。

onbeforeunload属性示例

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

笔记

当此事件返回(或将returnValue属性设置为)除null或者undefined之外的值时,系统将提示用户确认页面卸载。在某些浏览器中,事件的返回值显示在此对话框中。从Firefox 4,Chrome 51,Opera 38和Safari 9.1开始,将显示一个不受网页控制的通用字符串,而不是返回的字符串。

例如:

  • Firefox显示字符串“此页面要求您确认您要离开 - 您输入的数据可能无法保存。” 
  • Chrome会显示字符串“您想离开本网站吗?您所做的更改可能无法保存”;
  • Internet Explorer不尊重null返回值,并将其作为“null”文本显示给用户。您必须使用undefined跳过提示。

自2011年5月25日,调用到HTML5规范状态的window.alert(),window.confirm()和window.prompt()方法可以在此事件中被忽略。

另请注意,各种浏览器忽略事件的结果,并且根本不要求用户进行确认。该文件将始终自动卸载。Firefox在about:config中有一个名为dom.disable_beforeunload的开关来启用此行为。

你可以并且应该通过window.addEventListener()和beforeunload事件来处理此事件。

绑定到此事件可用于防止浏览器在JavaScript呈现内容的情况下完全缓存页面。在某些情况下,当为了填充内容而返回到已执行javascript的页面时,您可能会发现返回时返回访问时JavaScript没有运行。如果window.onbeforeunload已被绑定(并因此在离开该页面时触发),则页面中的javascript将在随后的回访中被触发并因此更新内容。

规范

该事件最初由Microsoft在Internet Explorer 4中引入,并在HTML5规范中进行了标准化。

规范 状态 注释
HTML Living Standard 
规范中的'GlobalEventHandlers'的定义。
Living Standard

HTML 5.1 
该规范中的'GlobalEventHandlers'的定义。
Recommendation

HTML5 
该规范中的'GlobalEventHandlers'的定义。
Recommendation

浏览器兼容性

电脑端 移动端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Androidwebview Chrome for Android
Edge Mobile 适用于Firefox for Android Opera for Android
iOS Safari
基本支持 支持:1 支持是的 支持:1 支持:4 支持:12 支持:3 支持 支持 支持 支持 不支持
已删除自定义文本支持
支持:51 不支持 支持:44 支持:38 支持:9 支持:51 支持:51 支持 支持:44 支持:38
window属性:onbeforeprint
window属性:onblur
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Fetch API官方文档指南

Fetch API方法

WindowOrWorkerGlobalScope执行者:window

window属性

WindowOrWorkerGlobalScope执行者:WorkerGlobalScope

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }