【问题标题】:Inject javascript on an async postback from a base page在来自基本页面的异步回发中注入 javascript
【发布时间】: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


    【解决方案1】:

    如果使用 ScriptManager 那么你可以使用下面的 sn-p

    if(ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
    {
       ...
    }
    

    【讨论】:

    • 但我知道这是异步回发。我只需要使用异步回发上的新密钥更新 javascript。 javascript中的键永远不会改变。
    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多