【问题标题】:Execute javascript after loading generic handler asp.net加载通用处理程序 asp.net 后执行 javascript
【发布时间】:2017-05-17 02:53:37
【问题描述】:

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

我的第一个方法是使用 iframe。内页将检索文件并将数据写入响应。如前所述,加载事件发生在加载 pdf 之前,我需要它在之后触发。当前代码使用通用处理程序 ashx 来加载 pdf 内联。 pdf 数据从 ashx 通用处理程序加载到服务器端后,如何触发事件来执行 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();
}

【问题讨论】:

    标签: javascript c# asp.net pdf ashx


    【解决方案1】:

    您是否尝试为object 标签的onload 事件设置事件处理程序?我不确定这是否适用于所有浏览器,但我也不知道您需要它在哪些浏览器上运行。

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

    Here's a previous answer 可以在这两个方面为您提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2013-06-12
      • 2013-06-09
      • 1970-01-01
      相关资源
      最近更新 更多