【问题标题】:Alerts when navigating away from a web page离开网页时发出警报
【发布时间】:2010-11-20 07:51:41
【问题描述】:

当我尝试用未保存的更改关闭我的 Google 文档选项卡时,这就是我在浏览器中看到的 (FF 3.5)。

您确定要离开吗 从这个页面?

您对此有未保存的更改 文档。现在点击取消,然后 “保存”以保存它们。现在点击确定 丢弃它们。

按确定继续,或按取消 停留在当前页面。

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

【问题讨论】:

    标签: javascript browser google-docs alerts


    【解决方案1】:

    通过浏览器。是 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);
    

    【讨论】:

    • 谢谢彼得。我研究了现代浏览器在 onbeforeunload 事件中的行为并发布了我的发现。请添加您知道的任何其他复杂细节。
    • 嗨彼得,我们有没有办法利用该事件来产生一个自定义警报,它提供与本机窗口警报相同的功能?
    • 我不知道,没有。​​
    • @PeterBailey 我建议您更新您的答案并使用更现代的addEventListener 而不是onbeforeunload。另外,事件名称是beforeunload,而不是onbeforeunload。
    • @MichałPerłakowski,似乎需要另一个答案(根据您的建议)。
    【解决方案2】:

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

    【讨论】:

    • 我至少在 Google Docs 源代码中看不到它。
    • 它可能隐藏在一些不起眼的 JavaScript 文件中。 Google 使用的脚本使他们的 JavaScript 文件对人类来说基本上是不可读的。
    • 在使用警报之前,必须先识别一个事件。其中“onBeforeUnload”
    猜你喜欢
    • 2017-12-30
    • 2016-10-23
    • 1970-01-01
    • 2013-01-26
    • 2011-04-10
    • 2013-10-29
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多