在XPage里面的XAgent中如何重定向到一个新窗口?

时间:2012-01-26 15:17:12

标签: xpages

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

此代码在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()

2 个答案:

答案 0 :(得分:6)

看起来您正试图跟踪某人点击下载链接的时间。

如果没有跟踪,链接就会直接指向文件,导致浏览器启动下载,用户将保留在当前页面上。使用XAgent跟踪后,用户将转到应用程序中的其他页面进行跟踪并启动下载。

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

但是,使用这种跟踪下载的方法会删除网站用户能够右键单击下载链接并执行“另存为”的功能。

答案 1 :(得分:0)

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