如何从PeopleCode关闭窗口?

时间:2016-03-29 18:25:43

标签: javascript java peoplesoft

据我所知,没有人在论坛(StackOverflow或其他地方)上提出这个问题。

我的问题

这是我需要做的。在招聘办公室,他们有一台电脑,仅用于从人们那里拿走I9。这种情况经常发生。最后,我们希望能够关闭浏览窗口,因为缓存,cookie(和登录信息)将从I9 Kiosk中删除。

有没有办法关闭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区域的页面,并在该HTML中嵌入JavaScript,但这似乎不起作用。我已将此页面放在与I9表单相同的组件中,并尝试调用TransferPage(Page.Y_CLOSE_WINDOW);但这似乎没有任何影响。这是因为页面的加载方式。

我的下一个想法是在PeopleCode中创建一个调用JavaScript的JavaObject(使用Rhino,Nashorn或javax.script.ScriptEngine),但它相当复杂,并且会让我不得不引入很多额外的代码和jar只是为了运行一个简单的JavaScript命令。我真的不想这样做。

1 个答案:

答案 0 :(得分:1)

只允许关闭window.close()之前由windows.open()打开的窗口。我认为这就是为什么它不起作用的原因。

即。你的浏览器阻止它。如果某些浏览器中存在黑客攻击,那么这是一个安全漏洞。例如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>