2009-08-17 47 views
52

当我试图关闭我的Google文档选项卡时未保存的更改时,这是我在浏览器中获得的内容(FF 3.5)。从网页导航时发出提醒

您确定要离开此页面, ?

您在此 文档中有未保存的更改。点击取消立即,然后 '保存'来保存它们。点击确定立即 丢弃它们。

按OK继续,或取消至 停留在当前页面。

我的问题是这些警报是否是网络应用程序的一部分(例如gdocs),还是由浏览器发出?如果是后者,这是如何完成的?

回答

83

通过浏览器。这是beforeunload事件处理程序,它返回对话框的自定义文本,该文本只是三个段落的中间部分 - 其他两个段落以及按钮的文本不能自定义或以其他方式更改。

window.onbeforeunload = function(){ return 'Testing...' } 

// OR 

var unloadListener = function(){ return 'Testing...' }; 
window.addEventListener('beforeunload', unloadListener); 

将产生一个对话框,说

Are you sure you want to navigate away from this page? 

Testing... 

Press OK to continue, or Cancel to stay on the current page. 

您可以通过设置处理器为null

window.onbeforeunload = null; 

// OR 

window.removeEventListener('beforeunload', unloadListener); 
+0

感谢彼得。我研究了现代浏览器如何处理onbeforeunload事件并发布了我的发现。请添加您知道的任何其他复杂细节。 – 2009-08-21 17:39:52

+0

嗨,彼得,难道我们无法利用事件产生自定义警报,它提供与本机窗口警报相同的功能吗? – SexyBeast 2013-09-10 19:51:30

+0

不是我知道的,没有。 – 2013-09-10 21:48:23

-11

警报是Web应用程序的一部分。查看源代码并查看javascript。

+1

寻找 “onBeforeUnload” 抵消这一点。 – 2009-08-17 17:16:37

+0

至少,我无法在Google文档来源中看到它。 – 2009-08-17 17:22:08

+0

它可能隐藏在一些不明显的JavaScript文件中。 Google使用的脚本使其JavaScript文件基本上不可读取给人类。 – ceejayoz 2009-08-17 17:31:41