2016-03-29 21 views
0

Anlattığım kadarıyla, hiç kimse bu soruyu bir forumda (StackOverflow veya başka bir yerde) sormadı.PeopleCode'dan bir pencereyi nasıl kapatırım?

Sorunum

İşte yapmam gereken şey. İşe alım bürolarında, sadece I9'ları insanlardan almak için kullanılan bir bilgisayar var. Bu çok sık olur. En sonunda, tarama penceresini kapatabiliriz, çünkü önbellek, çerezler (ve giriş bilgileri) I9 Kiosk'tan kaldırılır.

Geçerli tarayıcı penceresini PeopleCode'un içinde kapatmanın bir yolu var mı? Ben

denedi Ne

Bir pencereyi kapatma JavaScript önemsiz olduğunu biliyoruz. Basitçe window.close()'u koyarsınız ve tarayıcı penceresi kapanır. Bunu PeopleCode'da yapabilseydim, sorunum çözülecekti. Bunu yapmanın bir yolunu bulamadım.
Şu anda, formu teslim ettikten sonra aşağıdaki kod çağrılmaktadır. İşte

%Response.Write(GetHTMLText(HTML.G_CLOSE_FORM_KIOSK)); 

HTML içeriği başvuruluyor ise:

%Response.RedirectURL(GenerateScriptContentURL(%Portal, %Node, Record.WEBLIB_G_I9, Field.ISCRIPT1, "FieldFormula", "IScript_I9_CLOSE_KIOSK")); 

bu FieldFormula içinde, aşağıdaki kod olur.

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();

çağrılmaz ve sayfa yalnızca düz metin görüntülenir. Yanlış yaptığım bir şey mi var?

Yalnızca bir HTML alanının bulunduğu bir sayfaya yönlendirmeyi denedim ve bu HTML'de JavaScript'i gömdüm, ancak bu çalışma görünmüyor. Bu sayfayı I9 formu ile aynı bileşene yerleştirdim ve TransferPage(Page.Y_CLOSE_WINDOW);'u aramayı denedim ama bu hiç bir etkisi yok gibi görünüyor. Bunun nedeni, sayfaların yüklenme biçimidir.

Sıradaki düşüncem JavaScript'i (Rhino, Nashorn veya javax.script.ScriptEngine kullanarak) çağıran PeopleCode'da bir JavaObject oluşturmaktı, ancak oldukça karmaşıktır ve çok fazla kod eklemem gerekirdi ve sadece basit bir JavaScript komutunu çalıştırmak için kavanozlar. Bunu yapmayı gerçekten tercih ederim.

cevap

1

windows.open() tarafından önceden açılan bir pencereyi, window.close() önceden kapatmasına izin verilmektedir. Bence işe yaramamasının nedeni bu.

I.E. tarayıcınız bunu engeller. Bunu çözmek için bazı tarayıcılarda bir korsan varsa, bu bir güvenlik hatasıdır. Örneğin. window.top.close(), IE üzerinde çalışıyor ancak Firefox'ta çalışmıyor.

Pencereyi Peoplesoft oturumu kapatmadan kapatmak istiyor musunuz? Eğer

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

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

gibi HTML nesne ile onlar kapalı olduğunda net önbellek ve çerezler ayarlanır Kiosk bilgisayarlarda tüm tarayıcılar

GetLevel0()(1).CS_SESSION_WK.HTMLAREA.Value = GetHTMLText(HTML.CS_SESSION_LOGOUT, %Request.LogoutURL); 

kullanabilirsiniz geçerli oturumdaki çıkış için. Yani, kapanışa ek olarak çıkış yapmak da harika olurdu, bunun mümkün olduğunu düşünmedim. –

+0

Bildiğim kadarıyla, ana tarayıcı penceresini javascript ile kapatmak mümkün değil, önbellek ve çerezleri otomatik olarak temizlemek de mümkün değil.Önbelleği ve çerezleri temizlemek neden gereklidir? Güvenlik nedeniyle mi? –

+0

Önbellek ve çerezleri JavaScript ile temizleyemediğinizi biliyorum, ancak tarayıcı kapalıyken kullandığımız tüm tarayıcılarda (çoğunlukla Chrome/Firefox) mümkün oluyor. Ek bilgi arayacağım. Bu arada, bilgisayarın '% Response.Redirect (% Request.LogoutURL)' diyerek oturumu kapatmasına neden olabilirim; ' –

İlgili konular