【问题标题】:detect browser close events in vb.net检测 vb.net 中的浏览器关闭事件
【发布时间】:2011-08-13 12:38:44
【问题描述】:

我的网页看起来像:

<%@ Page Language="vb" AutoEventWireup="false" MasterPageFile = "~/Master11.master" CodeBehind="test7.aspx.vb" Inherits="MyApp.test7" %>

<%@ MasterType TypeName = "ASP.sample_template_master" %>

<asp:Content ID="Content2" ContentPlaceHolderID="mainContent1" runat="server">
</asp:Content>

当用户关闭浏览器时,如果用户想在退出前保存,我想显示一个确认框。

如果他说是,那么我希望将信息保存在数据库中并关闭浏览器,否则我只是关闭浏览器。

我阅读了 msdn 论坛,但我发现的只是窗口关闭事件,我无法在这里申请。

请帮忙。

谢谢, krum_cho.

【问题讨论】:

  • 关闭窗口和关闭浏览器有什么区别?任何人,您都必须为此使用 javascript - 如果您真的愿意,您可以随时通过 AJAX 将其传递回 VB.NET。你有什么不能使用 JavaSCript 的原因吗?
  • @Thomas:谢谢。但是我对 Ajax 不是很精通。我想到了使用javascript。但是我无法想出一个触发函数的事件(因为我在这里没有一个表单,我可以在其中有一个事件 onClose())。我尝试使用 window.closure 事件,但 Web 应用程序不支持它(至少我的类抛出错误)我的 test7.aspx.vb 看起来像 Partial Public Class test7 Inherits System.Web.UI.Page End Class
  • onclose 事件在客户端触发。将它放在服务器上运行的 ASP.NET 代码中没有任何好处。您需要将它放在 HTML 中的脚本标记中。
  • 我放了一些潜在的 JavaScript 代码(在 IE 中测试),可能会对您有所帮助。如果您仍然需要它在 CodeBehind 中触发,请告诉我。
  • 看看这个answer

标签: asp.net vb.net web-applications browser


【解决方案1】:

尝试使用以下 JavaScript 语句。

    window.onbeforeunload = function () {
        if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80)) {
            alert("Child window is closing...");
        }
    }; 

【讨论】:

  • @Thomas:谢谢。有什么方法可以将控制权转移到代码隐藏文件中,以便将信息保存在数据库中。
  • 可能会尝试使用 JavaScript 提交表单...这是未经测试的,但是:document.&lt;%=YourForm.ClientID%&gt;.Submit()
  • @Thomas:我真的没有“表单”,我只有一个“内容”。这个页面正在使用 masterPage。
  • 如果您使用的是 ASP.NET Web 表单,那么您就有了一个表单。一切都在里面。检查您的母版页并从那里获取表单 ID。
  • @Thomas:可以从我的代码后面调用任何其他方法,而不是使用表单提交吗?像'PUBLIC SUB SAVEDATA()'
猜你喜欢
  • 2014-01-18
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多