通话结束/ JavaScript时的事件

时间:2013-06-07 05:40:36

标签: javascript ajax events logging

我们想在我们的网站上记录JavaScript。为此,我用自己的实现覆盖了日志功能。

在服务器端,我们使用Log4Net进行日志记录。我现在的想法是捕获客户端上的日志并使用ajax将其发送到服务器。每次有人键入日志时我怎么都不想发送Ajax请求。所以我的想法是捕获所有日志并在调用堆栈结束之后发送一个请求。

是否有事件或方法来检测call-stack何时“已结束”?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用javascript beforeunload事件在用户离开页面时发送您的日志。 如果您使用jQuery,代码如下:

$(window).bind("beforeunload",function(event) {
    //... put your ajax code here ...

    return "The log has sent to server.";
});

然而,beforeunload事件会在屏幕上显示一个消息框。

此外,如果你想在另一个函数运行后运行一个函数,你可以使用jQuery $.when()方法,如下所示:

$.when(functionOne(), functionTwo()).then(functionThree()).done(functionFour());

functionOne(),functionTwo(),functionThree()和functionFour()必须是deferred object.  This blog给出了如何实现延迟对象的简单解释。