【问题标题】:How do I close my window in Xpage?如何在 Xpage 中关闭我的窗口?
【发布时间】:2023-03-07 01:50:01
【问题描述】:

其实我正在使用以下代码来关闭当前窗口:

window.close()

问题是,它在 IE 中运行良好,但在 FF 和 Chrome 中无法运行。

他们有什么好的解决方案吗?

【问题讨论】:

  • 你是用Javascript打开窗口的吗? Javascript 只能关闭使用 Javascript 打开的窗口。
  • 谁愿意回答,请考虑 XPiNC。
  • @jjtbsomhorst:其实是示例网页的首页。所以,让我知道他们有什么方法可以做到这一点......
  • 在 Chrome 和 FF 中,您可以在设置中指定是否支持 window.close()。如果关闭,则关闭。
  • 我宁愿不使用 javascript 来操作页面上下文之外的内容。操作系统太多,浏览器太多,版本太多,功能太多,无法让它无处不在。这是90'的方式。

标签: javascript lotus-notes xpages


【解决方案1】:
function windowclose(w) {
    try {
        if (dojo.isIE>=7) {
            w.open('', '_self', '');
            w.close();
        } else if (dojo.isIE==6) {
            w.opener = null;
            w.close();
        } else {
            if(!w.opener)
                w.opener = 'x';
            w.close(); 
        }
    } catch(e) {
        alert("To avoid data corruption/loss, please close this window immediately.");
    }
}

用作:

windowclose(window)

【讨论】:

  • :谢谢你的回复,每次都搬来抓,这也行不通,
【解决方案2】:

我找到了部分解决方案,Java 是你的朋友。它适用于按钮也应该适用于链接。唯一的问题是当从 onClose 之类的事件中调用时,当前 xpage 失去焦点并且当前页面保持打开状态。我试图模拟发送键并按下 ESC 键。它可以从一个按钮中正常工作。 点击事件上的按钮

<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:var robot:java.awt.Robot= new java.awt.Robot;var event:java.awt.event.KeyEvent=java.awt.event.KeyEvent;

robot.keyPress(event.VK_ESCAPE); 机器人.keyRelease(event.VK_ESCAPE); enter code here}]]>

    </xp:eventHandler>
</xp:button>

【讨论】:

    【解决方案3】:

    window.close() 在 8.5.3 中有效,但前提是 parent 包含一个对象,如果你有一个在普通 Notes 应用程序或普通视图中打开的 xpage,它不会这样做。你需要一个 window.open 来获得这个。

    我不久前对此进行了很多调查,但没有找到答案。我发现的唯一方法是您需要 Mindoo XPage2Esclipse plugin 才能使其正常工作。

    【讨论】:

      【解决方案4】:

      您可能需要在 Firefox 中调用 window.close() 之前调用 window.focus()

      【讨论】:

        【解决方案5】:

        我在 Chrome / FF / IE 的 8.5.3 应用程序中使用 window.close 没有问题。

        在应用程序的主页中,“案例文档”我在顶部有一些 CSJS,用于命名页面,即。

        window.name="mainWindow";
        

        然后我有一个按钮可以让您提出问题 - 这会弹出一个新窗口/选项卡并保持主案例文档打开。在新窗口中,有一个执行完整更新的提交按钮,在 onComplete 事件中,我有以下 CSJS 来更新主文档,因此您可以在显示 Q & 线程的重复控件中看到主文档上的问题一个文档:

            if (window.opener!=null){
                window.opener.location.href = window.opener.location.href; 
                window.close();}
            else {
                alert("Can't refresh parent case doc - have you closed the window?");
            }
        

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-25
          • 1970-01-01
          • 2023-01-24
          • 1970-01-01
          相关资源
          最近更新 更多