在XPages内部的XAgent中,如何重定向到新窗口?

在XPages内部的XAgent中,如何重定向到新窗口?,xpages,Xpages,我有一个XAgent,它似乎工作正常,但它会在当前浏览器中打开它。我如何在新窗口中打开它 此代码在XPage的RenderedResponse之后运行 谢谢 // Track Downloads // Setup XAgent stuff var exCon = facesContext.getExternalContext(); var writer = facesContext.getResponseWriter(); var response = exCon.getResponse()

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

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

看起来您正在尝试跟踪某人何时单击下载链接

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

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


使用这种跟踪下载的方法,将删除站点的用户能够正确点击下载链接并进行“保存AS”的能力。

< P>下载链接,您也可以考虑仅使用OuttoSt流(只有一个:作者或流)来流文件。直接提供要下载的文件的字节。您需要在标头中设置MIME类型。如果它不是浏览器可以处理的文件类型,则仍将显示下载对话框。现在打开一个新窗口实际上被认为是一种糟糕的风格。如果用户想要一个新窗口,则可以使用Ctrl+Click和Shift+Click->这是一个您不应该为他们做出的决定(这会打开浏览器文盲用户的蠕虫)。

谢谢!谢谢。如果有办法保持右键单击功能就好了。在链接上使用OutputStream的问题是,您会失去对调用页面的控制。下载文件后,页面上的部分刷新将失败。解决方法之一是使用隐藏的iFrame下载文件,但这在iPad等移动设备上不起作用。