我正在维护一个内部开发的XPages项目,并且有一个奇怪的问题。如果用户从“主页”页面开始并向下钻取到特定记录(即在单独的浏览器选项卡中打开的记录ID“9H4G7J”),然后开始更改,然后决定退出而不保存,方法是单击“退出”按钮的提示状态 - “你确定要离开这个页面吗?此文档可能包含未保存的更改“ - 并且当用户单击”好“时,”记录“选项卡关闭,用户使用先前的浏览器选项卡显示,并将记录的位置向下钻取到类别中。这是好事,这是我们想要的。XPages关闭浏览器
BUT,如果用户,而不是向下钻取,进入在“主页”屏幕上的搜索设备的记录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>
在此先感谢
等等!再次检查了这一点,其中一个区别是,当搜索一个记录ID然后单击该记录打开它时 - 这次它不会打开一个新的选项卡,而是记录显示在同一个浏览器选项卡中。 – AJF