当用户点击链接下载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();
}
}
答案 0 :(得分: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;
});
希望这会有所帮助......
[edit] - 添加了一些内联数据,以展示更完整的示例..