我正在維護一個內部開發的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