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

Posted

技术标签:

【中文标题】Lotus Notes Xpage - view.postScript("window.open()") 在替换包含的页面名称后不会打开新窗口(仅在特定文档中)【英文标题】:Lotus Notes Xpage - view.postScript("window.open()") doesn't open a new window after replacing the contained Pagename (only at a specific document) 【发布时间】:2013-11-19 14:11:11 【问题描述】:

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

    Distribution.xsp DistributionPrint.xsp

首先我正在使用

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

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

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

当我对其进行测试时,替换成功。之后,我正在为特定文档构建一个新 URL,以使用新路径打开。最后将所有内容放入 view.postScript 方法中:

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

现在我的问题开始了。在我 99% 的尝试中,新窗口会像我所说的程序那样打开。但是在某些文档中,我单击了按钮,但他没有打开新窗口并尝试打开旧的 Distribution.xsp url。我已经使用调试工具栏测试了他想要在这些文档中打开的路径。按钮单击的结果返回应该打开的完全正确的 URL。我也可以复制该网址并将其手动粘贴到我的浏览器中 => 它有效!但是,如果我想通过 buttonclick 和 viewPostScript 打开该 URL,则不会发生任何事情。

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

感谢大家的帮助!

【问题讨论】:

该部分刷新的 GET/POST 请求的调试结果 - 你能看到返回的 html 末尾的 postscript 代码吗? 【参考方案1】:

尝试将您的代码添加到页面上的 javascript 函数中,并从您的 view.postscript 代码中调用该函数 或者按照 Panu 的建议将其添加到 onCompete 代码中

【讨论】:

【参考方案2】:

如果 URL 正确,那么这听起来像是 view.postScript 的问题。试试<xp:this.onComplete>

其他尝试:

使用var w = window.open(..。普通的window.open 可能会改变 当前窗口。 使用 alert() 仔细检查 URL;

【讨论】:

【参考方案3】:

你可能在找完全错误的树。您是否尝试过创建第二个 CSS 样式表,而不是创建第二个打印页面?

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

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

【讨论】:

【参考方案4】:

感谢大家的建议。 Fredrik Norling 的解决方案对我有用。我将代码放入一个函数中,并在按钮单击时调用它。现在每个页面都按预期打开。非常感谢您的帮助!

【讨论】:

你应该接受 Fredrik 的回答,而不是自己写。

以上是关于Lotus Notes Xpage - view.postScript("window.open()") 在替换包含的页面名称后不会打开新窗口(仅在特定文档中)的主要内容,如果未能解决你的问题,请参考以下文章

IBM的lotus domino软件是做啥的?

Lotus domino 都用啥编程语言啊?

打开Lotus Notes 时出现“打开窗口出错”

C#操作Lotus Notes邮件

Lotus Notes 6.5打不开怎么办

求助Lotus Notes 8.5闪退的问题