[英]How do I close a window from PeopleCode?
據我所知,沒有人在論壇(StackOverflow或其他地方)上問過這個問題。
這是我需要做的。 在招聘辦公室,他們有一台計算機,僅用於從人員那里獲取I9。 這經常發生。 最后,我們希望能夠關閉瀏覽窗口,因為這樣會從I9信息亭中刪除緩存,Cookie(和登錄信息)。
有沒有辦法關閉PeopleCode內部的當前瀏覽器窗口?
我知道在JavaScript中關閉窗口很簡單。 您只需放置window.close()
,然后瀏覽器窗口關閉。 如果我可以在PeopleCode中做到這一點,我的問題將得到解決。 我還沒有找到任何辦法。
當前,提交表單后,將調用以下代碼。
%Response.RedirectURL(GenerateScriptContentURL(%Portal, %Node, Record.WEBLIB_G_I9, Field.ISCRIPT1, "FieldFormula", "IScript_I9_CLOSE_KIOSK"));
在此FieldFormula中,發生以下代碼:
%Response.Write(GetHTMLText(HTML.G_CLOSE_FORM_KIOSK));
這是被引用的HTML的內容。
You have successfully completed Section 1 of the Form I-9. Now present your documentation to the employment representative to complete Section 2
<script language="javascript">
window.close();
</script>
window.close();
不會被調用,並且頁面僅顯示純文本。 我做錯什么了嗎?
我試圖路由到僅具有HTML區域的頁面,並將JavaScript嵌入該HTML中,但這似乎不起作用。 我已將此頁面放置在與I9表單相同的組件中,並嘗試調用TransferPage(Page.Y_CLOSE_WINDOW);
但這似乎沒有影響。 這是因為頁面的加載方式。
我的下一個想法是在PeopleCode中創建一個調用JavaScript的JavaObject(使用Rhino,Nashorn或javax.script.ScriptEngine),但這相當復雜,這使我不得不引入很多額外的代碼和jar運行一個簡單的JavaScript命令。 我真的不願意這樣做。
僅允許通過window.close()
關閉先前由windows.open()
打開的窗口。 我認為這就是為什么它不起作用的原因。
IE瀏覽器會阻止它。 如果某些瀏覽器中存在黑客程序可以解決此問題,那就是安全漏洞。 例如window.top.close()
在IE上有效,但在Firefox上無效。
您是否真的要在不注銷Peoplesoft的情況下關閉窗口? 要從當前會話注銷,您可以使用
GetLevel0()(1).CS_SESSION_WK.HTMLAREA.Value =
GetHTMLText(HTML.CS_SESSION_LOGOUT, %Request.LogoutURL);
與HTML對象一樣
<!% *** Logout Session *** -->
<script language="JavaScript">
var timer = null
function move() {
window.location = '%BIND(:1)'
}
timer=setTimeout('move()',2000)
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.