2016-03-29 2 views
0

Насколько я мог сказать, никто не задавал этот вопрос на форуме (StackOverflow или в другом месте).Как закрыть окно из PeopleCode?

Моя проблема

Вот что мне нужно сделать. В офисах найма у них есть компьютер, который используется исключительно для того, чтобы взять I9 от людей. Это происходит очень часто. В самом конце мы хотим закрыть окно просмотра, потому что тогда кеш, файлы cookie (и данные для входа) удаляются из киоска 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> 

The window.close(); не называется, и страница отображается только простой текст. Есть ли что-то, что я делаю неправильно?

Я попытался перейти на страницу с только областью HTML на ней и вставить JavaScript в этот HTML-код, но это не работает. Я разместил эту страницу в том же компоненте, что и форма I9, и попытался позвонить TransferPage(Page.Y_CLOSE_WINDOW); Но это, похоже, не влияет. Это связано с тем, как загружаются страницы.

Моя следующая мысль заключалась в том, чтобы создать JavaObject в PeopleCode, который вызывает JavaScript (используя Rhino, Nashorn или javax.script.ScriptEngine), но он довольно сложный и заставит меня ввести много дополнительного кода и банки просто для запуска простой команды JavaScript. Я бы предпочел не делать этого.

ответ

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 Object как

<!% *** Logout Session *** --> 
<script language="JavaScript"> 
    var timer = null 
    function move() { 
     window.location = '%BIND(:1)' 
    } 

    timer=setTimeout('move()',2000) 
</script> 
+0

Все браузеры на компьютерах Kiosk устанавливаются в кеш и куки, когда они закрыты. Таким образом, в то время как выключение в дополнение к закрытию было бы здорово, я не думал, что это возможно. –

+0

Насколько я знаю, невозможно закрыть главное окно браузера с помощью javascript, а также не удается автоматически очистить кеш и файлы cookie.Почему необходимо очищать кеш и файлы cookie? По соображениям безопасности? –

+0

Я знаю, что вы не можете очистить кеш и файлы cookie через JavaScript, но это возможно во всех браузерах, которые мы используем (в основном Chrome/Firefox), когда браузер закрыт. Я буду искать дополнительную информацию. Кстати, я могу заставить компьютер выйти из системы, вызвав '% Response.Redirect (% Request.LogoutURL));' –

Смежные вопросы