【发布时间】:2011-08-08 13:54:02
【问题描述】:
我们的应用程序中有一个基本页面,所有其他页面都从该页面派生。我们一直在为每个页面请求在数据库中插入一条记录,以跟踪应用程序的使用统计信息。现在我们还想记录页面渲染后的一些数据,所以我们通过以下方式将一些 javascript 注入页面:
ScriptManager.RegisterStartupScript(this, this.GetType(), "readyTime", sReady, true);
这会注入一个带有一些 jQuery 的脚本,上面写着“当 window.load 事件触发时,将一些数据发送到 Web 服务,以便我们知道页面下载到客户端并呈现多长时间。
它适用于初始页面请求,但不适用于异步回发。我添加了代码,效果如下:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
// webservice call here
}";
问题是,异步代码确实在异步回发结束时触发,但它用于日志条目的密钥与初始请求中的密钥相同。当页面生成时,页面中的 javascript 被赋予一个键,并且该 javascript 没有被更新。我设置了一个断点,并且正在执行 ScriptManager 调用,但是页面上的脚本在每次回发后都保持不变。
有人知道这是否可行吗?
编辑:我看到了这篇文章:Client side script won't execute with ScriptManager 但是因为我在一个基本页面中,所以我不确定我是否可以确切地找出是哪个控件导致了回发。 (至少我尝试使用 __EVENTTARGET 的代码不起作用,因为有时它隐藏在用户控件或网格中)
【问题讨论】:
标签: javascript asp.net ajax