XPages关闭浏览器

时间:2014-04-28 09:54:44

标签: xpages

我正在维护一个内部开发的XPages项目,并且有一个奇怪的问题。如果用户从“主页”页面开始并通过类别向下钻取到特定记录,即记录ID“9H4G7J”(在单独的浏览器选项卡中打开),然后开始更改,但随后决定退出而不保存,通过单击“退出”按钮提示状态 - “您确定要离开此页面吗?此文档可能包含未保存的更改“ - 当用户单击”确定“时,”记录“选项卡将关闭,用户将显示上一个浏览器选项卡,其中记录的位置将在类别中向下钻取。这很好,这就是我们想要的。

但是,如果用户不是向下钻取,而是在“主页”屏幕上的搜索工具中输入记录ID“9H4G7J”,然后开始更改并单击“退出”,同样的提示显示上面概述的但是当用户点击“确定”时,会显示第二个提示,指出“您正在查看的网页正在尝试关闭此窗口。你想关闭这个窗口吗?“ - 如果用户点击”是“,浏览器将完全关闭!任何人都可以解释为什么这样会有不同的表现吗?

这是Java代码;

private UIComponent createEventHandler(FacesContext context, 
     UIComponent parent, PageExpressionEvaluator evaluator) {
        XspEventHandler result = new XspEventHandler();
        result.setSubmit(false);
        result.setEvent("onclick");
      MethodBinding script = evaluator.createMethodBinding(result,
         "if (XSP._isDirty()){\n    if (confirm (\"Are you sure you want to navigate   
         away from this page?\" + \"\\n\" + \"\\n\" +\n    \"This document may contain 
         unsaved changes.\" + \"\\n\" + \"\\n\" +\n    \"Press OK to continue, or 
         Cancel to stay on the current page.\")){\n        window.close();\n    }else
         {\n        return false;\n    }\n} else {\n   window.close();\n}",
           null,null, null);
           result.setScript(script);
           return result;
         }

这是XPage“编辑”按钮的源代码;

<xp:button value="Exit" id="button2">
  <xp:eventHandler event="onclick" submit="false">
    <xp:this.script><![CDATA[if (XSP._isDirty()){
        if (confirm ("Are you sure you want to navigate away from this page?" + "\n" 
        + "\n" + "This document may contain unsaved changes." + "\n" + "\n" +
         "Press OK to continue, or Cancel to stay on the current page.")){
          window.close();
          }else{
          return false;
          }
       } else {
         window.close();
       }]]></xp:this.script>
    </xp:eventHandler></xp:button>

提前致谢

1 个答案:

答案 0 :(得分:1)

当应用程序打开新选项卡或新窗口时,JavaScript调用window.close();将关闭该选项卡或窗口。如果您在最后一个窗口打开时发出关闭,浏览器将关闭。要查看效果:打开一个打开新页面的附加选项卡(dilbert.com是一个不错的选择)并查看效果。

要使您的应用程序行为保持一致,请将代码更改为始终打开(target = _blank)或永远不会打开新的选项卡/窗口

如果应用程序为我打开新标签,我个人很讨厌。如果我想要一个新选项卡,我可以在单击之前按住Ctrl键。但这是一个品味问题,您的用户可能会喜欢自动新标签。只需使其保持一致