如何在关闭页面的同时执行后台程序

xu_diligent 2010-09-24 08:34:41
各位大虾们,帮帮忙,我想在页面被点击关闭的同时进行别的后台操作,不知道是否可以实现。
补充说明:我用了母版页,只有一个页面在关闭时才需要进行后台操作,所以在body中加unload()是行不通的。这里进行关闭网页只有两种方式,一是点右上角的X关闭,二是非法关闭,我这目前只考虑正常关闭的情况。
各位高手帮帮忙。小弟感激不尽。
...全文
414 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2010-09-25
  • 打赏
  • 举报
回复
客户端的事件都是不可靠的。
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
嗨,辛辛苦苦,巡天遍地,终于找到个说的过去的方法呀,真是集百家之长啊..拿出来让各位高手修改修改,如果高手们不出招的话,那我只有这样了。
window.onbeforeunload = function()
{
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
//document.getElementById("ctl00_ContentPlaceHolder1_btnClose").click();
//alert("是关闭而非刷新");
//window.event.returnValue="是否关闭?";
//__doPostBack('ctl00$ContentPlaceHolder1$btnClose','');
//window.open('','_top');
//window.top.close();
window.open("deletePersonInfo.aspx","","height=10px,width=10px,top=1024px,left=1024px,toolbar=no,menubar=no,resizable=no");
}
else
{
//alert("是刷新而非关闭");
}
}

然后我只能在deletePersonInfo.aspx中的初始化中执行我要的操作了。
if (!IsPostBack)
{ ....
ClientScript.RegisterStartupScript(this.GetType(), "startup", "<script language='javascript'>window.open('','_top');window.top.close();</script>");
}
sharpdevelop110 2010-09-25
  • 打赏
  • 举报
回复
void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。

}
book_xuanxiang008 2010-09-25
  • 打赏
  • 举报
回复
清清凄凄切切切切切
lishuai1030 2010-09-25
  • 打赏
  • 举报
回复
学习了……
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
现在新问题又出来了,我点了别的按钮或者是只要是页面被刷新了,那window.onbeforeunload 都会被调用,这可怎么办呢?
xq1981 2010-09-25
  • 打赏
  • 举报
回复
你这种情况我处理过,你建一个UpdateState.aspx,在此页初始化用来处理你的后台事件,你在JS中写:
window.onbeforeunload = function()

window.open("UpdateState.aspx","",""..);

再让此页在规定时间内关闭!
我经常是这样处理的,方案可行!
shaxuli 2010-09-25
  • 打赏
  • 举报
回复
小心JS的刷新问题。建议查看QQWEB是如何做的。
wwfgu00ing 2010-09-25
  • 打赏
  • 举报
回复
操作 window.onbeforeunload 事件
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
高手,急急急急啊....
xujun5031 2010-09-25
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
现在是页面会调用js中的函数,我做了个实验,放代码alert("asd"),关闭时会弹出这个框,可当我换成document.getElementById("Button1").click();时,根本不会调用后台的代码,因为我这用了母版页,所以我的ID也会不同,但我运行后查看了源文件,然后改了id,但结果还是不行,高手们,指点指点。
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
关键是它不会点按钮,我现在就是需要在关闭前的瞬间进行数据的删除。
孟子E章 2010-09-25
  • 打赏
  • 举报
回复
正常关闭,你就让它点按钮,执行操作后关闭
xu_diligent 2010-09-25
  • 打赏
  • 举报
回复
2楼的放到有母版页的项目中行不通呀!我在内容窗体中写上,可关闭时根本就不会执行。高手们,出来帮帮忙呀....
linyuan807929 2010-09-25
  • 打赏
  • 举报
回复
还是来学习的!
xu_diligent 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 koukoujiayi 的回复:]
页面加一个按钮,隐藏之,按钮的click事件是你要执行的后台代码!

HTML code
<head runat="server">
<title></title>
<script type="text/javascript">
window.onbeforeunload = function() {
document.getE……
[/Quote]
谢了,在自己电脑上试了得行的,明天去公司试下就结贴。不过有点遗憾是,在VS中运行时,窗口是关闭了,可VS仍在调试中,得自己强制关闭。不知道这样会不会影响到发布后的项目?高手们,指点下,谢了!
chen8410 2010-09-24
  • 打赏
  • 举报
回复
这样不好捕捉吧,毕竟非正常关闭的情况很多
可以考虑在Session_End或者Application_End里面写执行代码
koukoujiayi 2010-09-24
  • 打赏
  • 举报
回复
页面加一个按钮,隐藏之,按钮的click事件是你要执行的后台代码!
<head runat="server">
<title></title>
<script type="text/javascript">
window.onbeforeunload = function() {
document.getElementById("Button1").click();
}
</script>

</head>
<body >
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" style="display:none;" />
</form>
</body>

    protected void Button1_Click(object sender, EventArgs e)
{
//你要执行的后台代码!
}
wuyq11 2010-09-24
  • 打赏
  • 举报
回复
window.onbeforeunload = function()
{
var obj = document.activeElement;
if(obj!=null && obj.tagName !="body" && obj.tagName !="HTML")
{}
}
</script>

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧