据我所知,还没有人在论坛(StackOverflow或其他地方)上问过这个问题。
我的问题
这是我需要做的。在招聘办公室,他们有一台计算机,专门用来从人们那里获取I9。这种情况经常发生。最后,我们希望能够关闭浏览窗口,因为这样缓存、cookies (和登录信息)就会从I9信息亭中删除。
有没有办法在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();,页面仅显示纯文本。我是不是做错了什么?
我曾尝试路由到一个只有一个超文本标记语言区域页面,并将JavaScript嵌入到该超文本标记语言中,但这似乎不起作用。我已将此页面放在与I9表单相同的组件中,并尝试调用TransferPage(Page.Y_CLOSE_WINDOW);,但似乎没有任何影响。这是因为页面加载的方式。
我的下一个想法是在PeopleCode中创建一个JavaObject,它调用JavaScript (使用Rhino、Nashorn或javax.script.ScriptEngine),但这相当复杂,仅仅运行一个简单的JavaScript命令就必须引入许多额外的代码和jars。我真的不想这么做。
发布于 2016-03-30 18:50:05
只允许通过window.close()关闭之前由windows.open()打开的窗口。我认为这就是它不起作用的原因。
也就是说,你的浏览器阻止了它。如果在一些浏览器中存在一个黑客来绕过这个漏洞,那就是一个安全漏洞。例如,window.top.close()可以在IE上运行,但不能在火狐上运行。
您真的想在不注销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>https://stackoverflow.com/questions/36292229
复制相似问题