Lotus Notes Xpage - view.postScript( "window.open()" ) 在替换包含的 Pagename 后不会打开新窗口(仅在特定文档处)



我目前正在开发一个函数(在Buttonclick之后启动),用于在Lotus Notes(IBM Domino Designer 9.0 Social Edition Release 9.0)中打印文档。我有一个自定义控件,可以在数据库中创建一个新文档。保存文档后,它以只读模式打开。你有一个按钮,它会将你重定向到一个新窗口,在那里显示相同的内容,没有任何布局和其他内容(只有文本)。现在可以用Ctrl+P打印页面了。这有两个不同的xPages。

  1. 分发.xsp
  2. 分发打印.xsp

首先,我使用

path = facesContext.getExternalContext().getRequest().getRequestURL(); 

以获取当前页面URL。之后,可以选择将路径(Distribution.xsp)的当前页面替换为DistributionPrint.xsp.

var replacePage = @RightBack(path, "/");
path = @ReplaceSubstring(path, replacePage, "DistributionPrint.xsp");

当我测试它时,更换成功了。之后,我为特定文档构建一个新的URL,以便使用新路径打开。最后,所有内容都被放入视图中。postScript方法:

var docid = docApplication.getDocument().getUniversalID();
view.postScript("window.open('"+path.toString() + "?documentId=" + docid + "&action=openDocument"+"')")

现在我的问题开始了。在我99%的尝试中,新窗口会像我说的程序一样打开。但有些文档中,我点击按钮,他不会打开新窗口,而是试图打开旧的Distribution.xsp url。我已经通过使用debugtoolbar测试了他想要在这类文档中打开的路径。单击按钮的结果返回应该打开的完全正确的URL。我也可以复制那个url并手动粘贴到我的浏览器=>它很有效!但是,如果我想通过单击按钮打开该URL并查看PostScript,则不会发生任何事情。

有人和我一样解决过同样的问题吗?也许你们中的一个人可以帮我解决那个问题。这真的很烦人,所有的东西都能在我99%的文档中找到,但在某些文档中,尽管给定的url是100%正确的,但它却不起作用。

感谢大家的帮助!

尝试将代码添加到页面上的javascript函数中,并从视图中调用该函数。postscript代码或者,正如帕努建议的那样,将其添加到onCompete代码

如果URL正确,则听起来像是view.postScript有问题。尝试使用<xp:this.onComplete>

其他尝试:

  • 使用var w = window.open(..。纯window.open可能会更改的URL当前窗口
  • alert()双击URL

您可能是找错了树。您是否尝试过创建第二个CSS样式表而不是创建第二页进行打印?

使用@Media Print,您可以告诉浏览器使用该样式表进行打印。在那里,您可以设置所有要显示的导航元素:没有,它们就不会打印。

不需要为打印内容维护单独的XPage。

感谢大家的建议。Fredrik Norling的解决方案对我很有效。我把Code放进一个函数中,点击按钮调用它。现在,每个页面都按预期打开了。非常感谢你的帮助!

最新更新