【问题标题】:How do I close a window from PeopleCode?如何从 PeopleCode 关闭窗口?
【发布时间】:2016-03-29 18:25:42
【问题描述】:

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

我的问题

这是我需要做的。在招聘办公室,他们有一台计算机,专门用于从人们那里获取 I9。这种情况经常发生。最后,我们希望能够关闭浏览窗口,因为这样会从 I9 Kiosk 中删除缓存、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),但它相当复杂,并且会让我不得不引入很多额外的代码和jars 只是为了运行一个简单的 JavaScript 命令。我真的不想这样做。

【问题讨论】:

    标签: javascript java peoplesoft


    【解决方案1】:

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

    I.E.您的浏览器会阻止它。如果某些浏览器中存在用于解决此问题的黑客攻击,则这是一个安全漏洞。例如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>
    

    【讨论】:

    • Kiosk 计算机上的所有浏览器都设置为在关闭时清除缓存和 cookie。因此,虽然除了关闭之外注销会很棒,但我认为这是不可能的。
    • 据我所知,无法通过 javascript 关闭主浏览器窗口,也无法自动清除缓存和 cookie。为什么需要清除缓存和 cookie?出于安全原因?
    • 我知道您无法通过 JavaScript 清除缓存和 cookie,但是当浏览器关闭时,可以通过我们使用的所有浏览器(主要是 Chrome/Firefox)来清除。我会寻找其他信息。顺便说一句,我可以通过调用%Response.Redirect(%Request.LogoutURL)); 使计算机注销
    • 也许它是一种解决方案,您可以通过在操作系统级别定期运行的脚本来终止浏览器会话,例如在 Windows 中 taskkill /fi "windowtitle PS Logout - Mozilla Firefox" 会杀死带有窗口标题“PS Logout - Mozilla”的 firefox 浏览器。窗口标题可以通过java脚本设置。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2013-02-14
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多