XPages关闭浏览器

XPages关闭浏览器,xpages,Xpages,我正在维护一个内部开发的XPages项目,但遇到了一个奇怪的问题。如果用户从“主页”开始,并通过类别深入到特定记录,即记录ID“9H4G7J”,该记录在单独的浏览器选项卡中打开,然后开始更改,但随后决定退出而不保存,单击“退出”按钮,提示状态为——“是否确实要导航到此页面?此文档可能包含未保存的更改”-当用户单击“确定”时,“记录”选项卡关闭,用户将看到上一个浏览器选项卡,其中记录的位置在类别中向下钻取。这很好,这就是我们想要的 但是如果用户没有向下搜索,而是在“主页”屏幕上的搜索工具中输入记录

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

但是如果用户没有向下搜索,而是在“主页”屏幕上的搜索工具中输入记录ID“9H4G7J”,然后开始更改并单击退出,则会显示上面概述的相同提示,但当用户单击OK时,会显示第二个提示,说明——“您正在查看的网页正试图关闭此窗口。是否要关闭此窗口?”–如果用户单击“是”,浏览器将完全关闭!!!有人能解释为什么会有不同的行为吗

下面是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>


提前感谢

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

要使应用程序行为一致,请将代码更改为始终打开(target=\u blank)或从不打开新选项卡/窗口


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

等等!刚刚再次检查了这一点,一个区别是在搜索记录ID然后单击要打开的记录时it-这次它不会打开新选项卡,而是在同一浏览器选项卡中显示记录。是的。谢谢stwissel。我发现通过搜索打开记录并不像通过向下钻取查找记录那样打开新选项卡。我不决定在新窗口中打开记录\tab它是最终用户和其他人开发的ped此应用程序-我只是有维护它的任务。我现在只是想知道如何在新选项卡\窗口中打开所选记录。添加属性target=“\u blank”到显示的链接。发现了按我们希望的方式工作的XPage,在调用window.open命令的JS文件中使用了名为tkDynamicViewPanelRowClick的函数。此外,XPage中工作的列不包含在dynamicViewPanel中,而是包含在普通的viewPanel中。我需要更改的XPage使用了动态视图面板和我尝试过模拟上面的工作方式,但由于没有一致的列名,我无法让它工作。更改HTML源代码的XPage是“href=”routetonotesdocument;action=editDocument“class=”xspLinkViewColumn“>”-如何使链接打开新页面?我尝试过调整“目标”动态视图面板的属性为“\u blank”,以及onColumnClick属性为“window.open()”,但这两个属性都不起作用。