簡體   English   中英

如何從PeopleCode關閉窗口?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM