2

我有这个 XAgent 似乎工作正常,但它在当前浏览器中打开它。如何在新窗口中打开它?

此代码在 XPage 的 After RenderedResponse 中运行。

谢谢

// Track Downloads

// Setup XAgent stuff
var exCon = facesContext.getExternalContext(); 
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();

var fileLink = param.get("link");

// Insert Logging Code here

facesContext.getExternalContext().redirect(fileLink);

writer.endDocument()
4

2 回答 2

6

看起来您正在尝试跟踪有人单击下载链接的时间。

如果不跟踪链接将直接指向文件,导致浏览器启动下载并且用户将停留在当前页面上。XAgent 跟踪到位后,用户将转到应用程序中的不同页面进行跟踪并启动下载。

您可以将“_blank”目标添加到调用 XAgent 的初始链接。这将导致在用户浏览器中打开一个新窗口/选项卡,但一旦开始下载,它将关闭。

但是,使用这种跟踪下载的方法将取消站点用户能够右键单击您的下载链接并执行“另存为”的能力。

于 2012-01-26T15:32:49.573 回答
0

对于下载链接,您还可以考虑仅使用 OutputStream 流式传输文件(只能有一个:Writer 或 Stream!)以直接提供要下载的文件字节。您需要在标头中设置 MIME 类型。如果它不是浏览器可以处理的文件类型,无论如何都会出现下载对话框。如今,打开一个新窗口实际上被认为是一种糟糕的风格。如果用户想要一个新窗口,则可以使用 Ctrl+Click 和 Shift+Click -> 一个您不应该为他们做出的决定(这会打开浏览器文盲用户的蠕虫罐头)。

于 2012-01-27T00:27:55.060 回答