前幾天給客戶培訓(xùn),系統(tǒng)出現(xiàn)一個以前沒注意到的問題,找了好久沒找到解決方法,今天靈機一動,找到了問題所在,網(wǎng)上找到一篇網(wǎng)友的文章,和我情況完全相同,而且還有網(wǎng)友解決方法,在此謝謝這位網(wǎng)友,給了我不少啟示。。。文章如下:
一直被這個問題郁悶:
在窗口A中使用showModalDialog()打開了一個新的模態(tài)窗口B。然后在B窗口中進(jìn)行一些業(yè)務(wù)操作,最后還需要根據(jù)業(yè)務(wù)操作打印一些表單,結(jié)果此時在B中調(diào)用open()方法就會出現(xiàn)session丟失的現(xiàn)象,提示用戶重新登陸。
兩天來一直沒頭蒼蠅一樣不停的試驗各種方法。如果在這個窗口中采用打開非模態(tài)對話框的打開方法showModelessDialog()就沒有任何問題,但是直接使用open()方法就是不能達(dá)到想要的效果。在網(wǎng)上不停的google,到各大bbs尋找解答,提供的都是最簡單的應(yīng)用。好不容易找到一篇文章,其中提到session對象的有效范圍,卻也沒有具體提到我遇到的問題:
IE中:
有效的窗品包括
1.Session對象只在建立Session對象的窗口中有效。
2.在建立Session對象的窗口中新開鏈接的窗口
無效的窗口包括
1.直接啟動IE瀏覽器的窗口
2.不是在建立Session對象的窗口中新開鏈接的窗口
考慮只在建立session對象的窗口中有效,于是就在子窗口中重新使用session.setAttribute()方法,以為如此就可以成功,結(jié)果還是不行,郁悶。
早上起來突然來了靈感,既然子窗口中造成了session丟失,在父窗口中是無論如何還存在著session的變量的,我可以不必在子窗口中重新設(shè)置session變量,而可以直接調(diào)用父窗口的javascript函數(shù)open()方法可能會到目的吧。不管如何先試試,結(jié)果果然如此。
很多時候問題就是這樣的,想要偷懶,于是不自己鉆研,到處尋求解答,最后還是得靠自己來搞定。