0

我们的客户希望能够在用户单击链接下载 PDF 时运行一些 javascript 跟踪代码。我的解决方案是将文件名作为查询字符串传递给页面,然后提示用户下载文件。无论如何让javascript在.net代码之前运行?

这是我在文件下载页面上使用的:

public partial class FileTracking : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string pdf = Request["pdf"] ?? string.Empty;

        if (string.IsNullOrEmpty(pdf)) return;

        Response.Clear();
        Response.AppendHeader("content-disposition", "attachment; filename=" + pdf);
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(pdf);
        Response.Flush();
        Response.End();
    }
}
4

1 回答 1

2

没有看到 javascript 代码,很难完全评估。但是,如果您使用的是 jquery,那么当然可以通过执行类似于以下的操作来拦截对链接的点击:

$('.myLink' data-filename='warandpeace.pdf' data-file-url="/file/history").click(function(e){
    var fileName = $(this).data('filename');
    var url = $(this).data('file-url');
    // this prevents the link actioning straight away
    e.preventDefault();
    // do your tracking stuff here 
    trackMyStuff(fileName);
    // invoke your file download now
    downloadMyFile(fileName, url);
    return false;
});

希望这可以帮助...

[编辑] - 添加了一些内联数据属性以显示更完整的示例..

于 2013-10-30T15:09:48.410 回答