加载通用处理程序asp.net后执行javascript

加载通用处理程序asp.net后执行javascript,javascript,c#,asp.net,pdf,ashx,Javascript,C#,Asp.net,Pdf,Ashx,我有一个带有pdf文件列表的gridview。当用户单击pdf时,它会在页面上内联显示文件。我想在pdf加载后执行一些javascript,但我无法让它工作。问题是pdf在加载其他内容之后加载,因此加载事件在pdf开始加载之前触发 我的第一种方法是使用iframe。内部页面将检索文件并将数据写入响应。如前所述,加载事件发生在加载pdf之前,我需要在加载之后触发它。当前代码使用通用处理程序ashx内联加载pdf。在服务器端从ashx通用处理程序加载pdf数据后,如何触发事件以执行javascrip

我有一个带有pdf文件列表的gridview。当用户单击pdf时,它会在页面上内联显示文件。我想在pdf加载后执行一些javascript,但我无法让它工作。问题是pdf在加载其他内容之后加载,因此加载事件在pdf开始加载之前触发

我的第一种方法是使用iframe。内部页面将检索文件并将数据写入响应。如前所述,加载事件发生在加载pdf之前,我需要在加载之后触发它。当前代码使用通用处理程序ashx内联加载pdf。在服务器端从ashx通用处理程序加载pdf数据后,如何触发事件以执行javascript

Aspx页面:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "View")
    {
        int index = Convert.ToInt32(e.CommandArgument.ToString());
        string Id = GridView1.DataKeys[index].Value.ToString();
        HtmlGenericControl myObject = new HtmlGenericControl();
        myObject.TagName = "object";
        Panel1.Controls.Add(myObject);
        myObject.Attributes.Add("data", "GetPdf.ashx?Id=" + Id);
    }
}
通用处理程序ashx:

public void ProcessRequest(HttpContext context)
{
    System.Diagnostics.Debug.WriteLine("GetPdf.ashx started");
    string Id = context.Request.QueryString["Id"];
    byte[] data = GetPdf(Id);
    context.Response.ClearContent();
    context.Response.ContentType = "application/pdf";
    context.Response.AppendHeader("Content-disposition", "inline");
    context.Response.AddHeader("Content-Length", data.Length.ToString());
    context.Response.BinaryWrite(data);
    System.Diagnostics.Debug.WriteLine("GetPdf.ashx is done");
    context.Response.End();
}

您是否尝试过为
对象
标记的
onload
事件设置事件处理程序?我不确定这是否适用于所有浏览器,但我也不知道您需要它在哪些浏览器上工作

最坏情况下,您可以使用
setTimeout
快速轮询PDF是否存在

这可能对你两方面都有帮助