求关闭窗口时触发服务器端函数的实例代码

caobob 2008-11-09 12:11:25
就是在使用者按下那个X时,需要调用一段别人写在后台的函数。时间紧迫,大家帮我。谢谢!分数100,第一个提供能用代码的给70分。后面的提供能用的代码平分20分。其他提供建设性意见的平分10分。
...全文
202 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
caobob 2008-11-11
  • 打赏
  • 举报
回复
我已经做出来了。不过,由于是公司里做的具体代码就不好公布了。思路是利用onbeforeunload方法。所有提及这个方法的分就多点。其他就少点了。
Jinglecat 2008-11-10
  • 打赏
  • 举报
回复
window.onbeforeunload = function() {
// your code
// ...
}
徒步-天下 2008-11-10
  • 打赏
  • 举报
回复
onbeforeunload="PageClose()"


function PageClose()
{
if(event.clientX>document.body.clientWidth -30 && event.clientY<0 || event.altKey) //event.altKey表示按下了Alt按纽
{

window.location .href="online.aspx";//这里可以进行你想要的
widnow.close();
}
}
homesos 2008-11-10
  • 打赏
  • 举报
回复
使用onbeforeunload实现。

用法:

object.onbeforeunload = handler
<element onbeforeunload = “handler” … ></element>
描述:
事件触发的时候弹出一个有确定和取消的对话框,确定则离开页面,取消则继续待在本页。
handler可以设一个返回值作为该对话框的显示文本。

触发于:

关闭浏览器窗口
通过地址栏或收藏夹前往其他页面的时候
点击返回,前进,刷新,主页其中一个的时候
点击 一个前往其他页面的url连接的时候
调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
重新赋予location.href的值的时候。
通过input type=”submit”按钮提交一个具有指定action的表单的时候。
可以用在以下元素:
BODY, FRAMESET, window

平台支持:
IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
  • 打赏
  • 举报
回复
在window.onbeforeunload事件里采用同步的方法调用ajax应该是可以的,但如果这个时候你希望窗口不关,好像控制不了,窗口始终还是会关掉,不过你可以定义一个变量,然后在unload里去判断窗口是否需要关闭。
Apple 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 caobob 的帖子:]
就是在使用者按下那个X时,需要调用一段别人写在后台的函数。时间紧迫,大家帮我。谢谢!分数100,第一个提供能用代码的给70分。后面的提供能用的代码平分20分。其他提供建设性意见的平分10分。
[/Quote]
up~~~
wfyfngu 2008-11-10
  • 打赏
  • 举报
回复
window.onbeforeunload = function() {
// TODO: 这里添加和服务器通信的代码
}
JeffChung 2008-11-10
  • 打赏
  • 举报
回复

<HTML>
<HEAD>
<SCRIPT>
function closeIt()
{
return "Any string value here forces a dialog box to \
appear before closing the window.";
}
window.onbeforeunload=closeIt;
</SCRIPT>
</HEAD>
<BODY>
<a href="http://www.microsoft.com">Click here to navigate to
www.microsoft.com</a>
</BODY>
</HTML>
qq2013 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 qq13237810775 的回复:]
引用 16 楼 Jinglecat 的回复:
window.onbeforeunload = function() {
// your code
// ...
}
[/Quote]
qq2013 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 Jinglecat 的回复:]
window.onbeforeunload = function() {
// your code
// ...
}
[/Quote]
caobob 2008-11-10
  • 打赏
  • 举报
回复
大家还是没明白我的意思。A.aspx和A.aspx.vb,别人又写了一个公共模块里面有B方法。现在要做的是当按下X时,A.aspx.vb里需要调用B方法。然后决定是否能关闭。
caobob 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zpcoder 的回复:]

不是有一个 unload 事件吗。

这个也不行么??
[/Quote]
不行的。
caobob 2008-11-09
  • 打赏
  • 举报
回复
我搜了些别人的方法,要用onbeforeunload()这个方法。还是搞不大明白。
caobob 2008-11-09
  • 打赏
  • 举报
回复
antiking兄,我需要的做法类似:使用者按X时,浏览器不关闭。然后服务器端处理这个事件。服务器端是别人写的方法。如果是某个状态A,别人的方法会根据状态A在页面跳出对应的对话框,提示不同的信息。
antiking 2008-11-09
  • 打赏
  • 举报
回复
html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>xmlhttprequest ajax demo</title>
<script type ="text/javascript" language ="javascript" >
var req; //定义变量,用来创建xmlhttprequest对象
function creatReq() // 创建xmlhttprequest,ajax开始
{
var url="ajaxServer.aspx"; //要请求的服务端地址
if(window.XMLHttpRequest) //非IE浏览器,用xmlhttprequest对象创建
{
req=new XMLHttpRequest();
}
else if(window.ActiveXObject) //IE浏览器用activexobject对象创建
{
req=new ActiveXObject("Microsoft.XMLHttp");
}

if(req) //成功创建xmlhttprequest
{
req.open("GET",url,true); //与服务端建立连接(请求方式post或get,地址,true表示异步)
req.onreadystatechange = callback; //指定回调函数
req.send(null); //发送请求
}
}

function callback() //回调函数,对服务端的响应处理,监视response状态
{
if(req.readystate==4) //请求状态为4表示成功
{
if(req.status==200) //http状态200表示OK
{
Dispaly(); //所有状态成功,执行此函数,显示数据
}
else //http返回状态失败
{
alert("服务端返回状态" + req.statusText);
}
}
else //请求状态还没有成功,页面等待
{
document .getElementById ("myTime").innerHTML ="数据加载中";
}
}

function Dispaly() //接受服务端返回的数据,对其进行显示
{
document .getElementById ("myTime").innerHTML =req.responseText;
}

</script>
</head>
<body>
<div id="myTime"></div>

<input id="txt1" type="text" value="Get Time" onblur ="creatReq();"/>
</body>
</html>服务端ajaxServer.aspx代码
public partial class ajaxServer : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000); //为了看到ajax效果,将当前线程延时1000毫秒
Response.Write(DateTime .Now .ToString ()); //输出当前时间
}
}
antiking 2008-11-09
  • 打赏
  • 举报
回复
ajax
onblur="javascript:void(0);"
zpcoder 2008-11-09
  • 打赏
  • 举报
回复

不是有一个 unload 事件吗。

这个也不行么??
msg03 2008-11-09
  • 打赏
  • 举报
回复
39364250--Asp.net(C#)高手交流群(高级群)!欢迎高手加盟!
冷月孤峰 2008-11-09
  • 打赏
  • 举报
回复
用JS来监测IE的关闭事件:
function window.onunload()
{
if (event.clientX < 0 && event.clientY < 0)
window.open("./xx.aspx","logout","toolbar=no ,scrollbars=no ,resizable=no,top=0,left=0,Width=10,Height=10");
}

在xx.aspx页面的pageLoad事件中调用指定的方法!
manbufenglin 2008-11-09
  • 打赏
  • 举报
回复
顶一下!
加载更多回复(6)

62,243

社区成员

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

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

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

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