捕获浏览器关闭事件 [英] Catching A Browser Close Event

查看:160
本文介绍了捕获浏览器关闭事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好老年人(因为我是新来的基于网络的应用),
我渴望实现或捕捉浏览器关闭事件。
是!我做到了,成功地用JavaScript实现它{见下文code}
但我在没有母版网页付诸实施。
现在,我想实现它与母版网页,但每个帖子后面......事件window.onunload被捕获,这是给我的问题...
是否有任何技术或逻辑来检测我是否可以在关闭浏览器的按钮和页面的回发事件进行区分。

请指引我......因为我有一个项目,尽快落实....
谢谢你。

ANKIT塔瓦

 <脚本类型=文/ JavaScript的>        功能callAjax(WEBURL,的queryString)
        {
            VAR xmlHttpObject = NULL;                尝试
                {
                        // Firefox,歌剧8.0+,Safari浏览器...                        xmlHttpObject =新XMLHtt prequest();
                    }
               赶上(前)
                {
                       // IE浏览器...                尝试
                    {
                        xmlHttpObject =新的ActiveXObject(MSXML2.XMLHTTP);
                    }
                赶上(前)
                {
                    xmlHttpObject =新的ActiveXObject('Microsoft.XMLHTTP');
                }
             }            如果(xmlHttpObject == NULL)
                {
                window.alert(AJAX是不是在这个浏览器可用');
                返回;
                 }        xmlHttpObject.open(GET,WEBURL +的queryString,FALSE);
        xmlHttpObject.send();        返回XMLTEXT;
}< / SCRIPT><脚本类型=文/ JavaScript的>VAR g_isPostBack = FALSE;window.onbeforeunload =检查()
功能检查()
{
 如果(g_isPostBack ==真)
  返回; VAR closeMessage =
  你正在退出这个页面。\\ n'+
  如果你不保存所做的更改,更改将丢失。\\ n'+
  你确定要退出吗?; 如果(window.event)
 {
  //只有IE浏览器...  window.event.returnValue = closeMessage;
 }
 其他
 {
  // 其它浏览器...  返回closeMessage;
 } g_isPostBack = FALSE;
}
window.onunload =功能()
{
 如果(g_isPostBack ==真)
  返回; VAR WEBURL ='LogOff.aspx';
 VAR的queryString ='?LogoffDatabase = Y&放大器;用户名='+'<%#会话[登录ID]%GT;';
 VAR回报code = callAjax(WEBURL,的queryString);}< / SCRIPT>


解决方案

有是被关闭浏览器,用户导航到另一个页面区分(通过前进/后退按钮,或者点击一个链接没有JavaScript事件,或任何其他导航方法)。当前页面被卸载时,您只能告诉。话虽如此,我不知道为什么你甚至会需要知道有什么区别?听起来像一个XY的问题给我。

Hello Seniors (As I am new to Web Based Applications), I was keen to implement or catching browser closing event. Yes! I did it and successfully implemented it by using javascript{see code below} but I have implemented it in a web page without MasterPage. Now, as I am trying to implement it in a webpage with MASTERPAGE but in each post back...the event window.onunload is caught, which is giving me problems... Is there any technique or logic to detect whether I can differentiate between a Close browser button and a page's post back event.

Please guide me...as I have to implement in a project as soon as possible.... thank you.

Ankit Srivastava

 <script type="text/javascript">

        function callAjax(webUrl, queryString)
        {
            var xmlHttpObject = null;

                try
                {
                        // Firefox, Opera 8.0+, Safari...

                        xmlHttpObject = new XMLHttpRequest();
                    }
               catch(ex)
                {
                       // Internet Explorer...

                try
                    {
                        xmlHttpObject = new ActiveXObject('Msxml2.XMLHTTP');
                    }
                catch(ex)
                {
                    xmlHttpObject = new ActiveXObject('Microsoft.XMLHTTP');
                }
             }

            if ( xmlHttpObject == null )
                {
                window.alert('AJAX is not available in this browser');
                return;
                 }

        xmlHttpObject.open("GET", webUrl + queryString, false);
        xmlHttpObject.send();

        return xmlText;
}

</script>

<script type="text/javascript">

var g_isPostBack = false;

window.onbeforeunload = check ()
function check()
{
 if ( g_isPostBack == true )
  return;

 var closeMessage =
  'You are exiting this page.\n' +
  'If you have made changes without saving, your changes will be lost.\n' +
  'Are you sure that you want to exit?';

 if ( window.event )
 {
  // IE only...

  window.event.returnValue = closeMessage;
 }
 else
 {
  // Other browsers...

  return closeMessage;
 }

 g_isPostBack = false;
}
window.onunload = function ()
{
 if ( g_isPostBack == true )
  return;

 var webUrl = 'LogOff.aspx';
 var queryString = '?LogoffDatabase=Y&UserID=' + '<%# Session["loginId"] %>';
 var returnCode = callAjax(webUrl, queryString);

}

</script>

解决方案

There is no javascript event which differentiates between a browser being closed and the user navigating to another page (either via the back/forward button, or clicking a link, or any other navigation method). You can only tell when the current page is being unloaded. Having said that, I'm not sure why you'd even need to know the difference? Sounds like an XY problem to me.

这篇关于捕获浏览器关闭事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆