在窗口onbeforeunload事件上调用web方法

时间:2013-05-09 14:11:01

标签: c# javascript asp.net asp.net-ajax

我在基本的ASP.net网站上工作,我想在用户试图离开页面时执行服务器端功能。为此我使用窗口的onbeforeunload事件。我的页面上有复选框,当用户选中此复选框时,我正在执行sverside“checkedchange事件”。问题是每当用户点击此复选框时,我的Web方法也会被调用,不应该调用,因为只有回发发生,用户不会离开我的页面。任何人都可以建议我在回发发生时避免使用Web方法调用。 我只想在以下场景中执行web方法: 1)当用户关闭浏览器时。 2)点击“查找更多匹配”按钮,当用户登陆搜索结果页面时没有列出学校。 3)当用户从浏览器的地址栏更改网址时

aspx页面上的代码:
    

     function GetMessage() {
         var urlstring = document.URL;
         {

             PageMethods.Message( document.URL);
         }
     }

</script>


  Code on aspx.cs page

 [System.Web.Services.WebMethod]
public static void Message()
{
    string x="a";
}

1 个答案:

答案 0 :(得分:0)

此链接应该包含您要查找的答案:How to capture the browser window close event?

我认为该链接的以下代码是您正在寻找的。

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind('beforeunload', function(eventObject) {
    var returnValue = undefined;
    if (! inFormOrLink) {
       //TODO: Execute some code before unload here
       //returnValue = "Message to display before the user leaves the page.";
    }
    eventObject.returnValue = returnValue;
    return returnValue;
});