当前位置: 首页 > 面试题库 >

当浏览器窗口意外关闭时发出警报

许俊风
2023-03-14
问题内容

我有一个聊天应用程序,我希望每当用户不小心或手动关闭浏览器时,他都应该收到警报,以便可以执行各种清理操作。我希望在before事件上使用更多的东西,但我希望将其用于特定的网页,因为所有其他网页也在加载前被调用。请帮忙


问题答案:

我们应防止或提示用户执行这些操作将丢失其数据。

  1. 单击后退浏览器按钮。
  2. 单击刷新浏览器按钮。
  3. 点击浏览器的关闭按钮。
  4. 单击前进浏览器按钮。
  5. 键盘击键- Alt+ F4 (关闭)
  6. 键盘击键- F5(刷新)
  7. 键盘击键- CTRL+ F5(刷新)
  8. 键盘击键- Shift+ F5(刷新)
  9. 网址变更
  10. 或导致回发的任何内容,而不是您特定的提交按钮。

为了说明我已经使用了两个文本框,一个ID为TestButton的Asp.net提交按钮。我采取的其他回发控件是另一个asp.net按钮,一个具有autopostback属性为true的复选框,一个具有autopostback属性为true的dropdownlist。现在,我已经使用了所有这些回发控件,以便向您展示,当用户在这些控件上执行操作时,我们还需要向用户显示有关数据丢失的提示。在提交按钮上,我们将不会显示提示,因为我们必须通过该控件操作来提交数据。这是示例代码。我在控件更改上设置了window.onbeforeunload方法。

<html >
<head id="Head1">
    <title></title>

    <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    <script type="text/javascript">
        $(function()
        {
            // Prevent accidental navigation away
            $(':input').bind(
                'change', function() { setConfirmUnload(true); });
            $('.noprompt-required').click(
                function() { setConfirmUnload(false); });

            function setConfirmUnload(on)
            {
                window.onbeforeunload = on ? unloadMessage : null;
            }
            function unloadMessage()
            {
                return ('You have entered new data on this page. ' +
                        'If you navigate away from this page without ' +
                        'first saving your data, the changes will be lost.');
            }

            window.onerror = UnspecifiedErrorHandler;
            function UnspecifiedErrorHandler()
            {
                return true;
            }

        });

    </script>

</head>
<body>
    <form id="form1" name="myForm" runat="server">
    <div>
        First Name :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <br />
        Last Name :<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <br />
        IsMarried :<asp:CheckBox ID="CheckBox1" runat="server" /><br />
        <br />
        <asp:Button runat="server" ID="TestButton" Text="Submit" CssClass="noprompt-required" /><br />
        <br />
        <br />
        <br />
        <br />
        <asp:Button runat="server" ID="AnotherPostbackButton" Text="AnotherPostbackButton"
             /><br />
        <br />
        <asp:CheckBox runat="server" ID="CheckboxWhichCausePostback" Text="CheckboxWhichCausePostback"
            AutoPostBack="true" /><br />
        <br />
        DropdownWhichCausePostback<asp:DropDownList runat="server" ID="DropdownWhichCausePostback"
            AutoPostBack="true">
            <asp:ListItem Text="Text1"></asp:ListItem>
            <asp:ListItem Text="Text2"></asp:ListItem>
        </asp:DropDownList>
        <br />
        <br />
    </div>
    </form>
</body>

上面我用过:

$('.noprompt-required').click(function() { setConfirmUnload(false); });

我在这一行中所做的是我正在调用setConfirmUnloadmethod并将false作为参数传递,这将设置window.onbeforeunload为null。因此,这意味着在不希望提示该用户的任何控件上,为该控件提供类,.noprompt- required并保留其他类。



 类似资料:
  • 我正在为Facebook编写一个代码,它从属性文件中获取URL、ID、密码,但在登录时,我会被提示“Facebook想要显示通知-允许-阻止”,在登录后我该如何使其如此(a)按ESP或Alt+F4并关闭弹出窗口或(B)查找通知并自行关闭通知。这是我使用的,但它不起作用。感谢任何帮助。

  • 问题内容: 有谁知道我可以使用JavaScript检查浏览器窗口何时关闭并弹出确认对话框询问用户是否确认退出浏览器还是改变主意的任何方式? 问题答案: window.onbeforeunload = function (e) { var e = e || window.event;

  • 问题内容: 我正在使用selenium webDriver为一个Web应用程序编写测试,并且遇到一种情况,当我尝试关闭浏览器时,我会弹出一个对话框:“确定吗?”页面要求您确认要离开- 输入的数据将迷路了。” 有2个按钮:“离开页面”和“停留在页面上” 如何单击这些按钮? 问题答案: 为我解决了这个问题

  • 问题内容: 我试图找出用户何时离开指定页面。找出他何时使用页面内的链接进行导航是没有问题的,但是我有点需要标记一些东西,例如当他关闭窗口或键入另一个URL并按Enter时。第二个不是那么重要,但第一个是重要。所以这是一个问题: 我如何查看用户何时关闭我的页面(捕获window.close事件),然后……并没有什么关系(我需要发送AJAX请求,但是如果可以获取它以运行警报,我可以剩下的)。 问题答案

  • 问题内容: 我尝试使用以下代码在关闭浏览器窗口时收到警报: 它可以工作,但是如果页面包含一个超链接,则单击该超链接会引发相同的警报。仅在关闭浏览器窗口时才需要显示警报,而在单击超链接时则不需要。 问题答案: 保持您的代码不变,并使用jQuery处理链接:

  • 问题内容: 我想在网页上创建一个链接,该链接将关闭浏览器中当前活动的选项卡,而不关闭浏览器中的其他选项卡。 当用户单击关闭链接时,将出现一条警告消息,要求用户使用两个按钮“是”和“否”进行确认。如果用户单击“是”,则关闭该页面,如果“否”,则不执行任何操作。 怎么做到呢?有什么建议么? 问题答案: 您将需要Javascript来执行此操作。用途: 注意: 隐含当前选项卡。这等效于: 或者您可以指定