我在JSP頁面上使用下面的定位標記來從同一個應用程序打開另一個頁面,但是新窗口並未在同一個會話中打開,而是重定向到我的應用程序的登錄頁面。任何線索爲什麼?window.open不會在同一會話中打開
<a href="#" onclick="window.open('/path_to_same_page', '_blank',
'toolbar=0,status=0,resizable=1'); return false;">Click here...</a>
我在JSP頁面上使用下面的定位標記來從同一個應用程序打開另一個頁面,但是新窗口並未在同一個會話中打開,而是重定向到我的應用程序的登錄頁面。任何線索爲什麼?window.open不會在同一會話中打開
<a href="#" onclick="window.open('/path_to_same_page', '_blank',
'toolbar=0,status=0,resizable=1'); return false;">Click here...</a>
此行爲背後的原因是,父頁面託管在我們的Windows應用程序中嵌入的IE瀏覽器控件上。當它創建一個新窗口(使用window.open或target =「_ blank」)時,新窗口由iexplore.exe進程擁有,並且不會從我們的應用程序擁有的父IE窗口繼承會話cookie處理。這個問題沒有通用的解決方案。在我們的例子中,我們使用某種單點登錄來共享兩個窗口實例之間的會話上下文。
首先使用encodeURL(「」)對該url進行編碼;然後添加在JavaScript文件
真的不相關 –
嘗試這種解決方法,不知道它會幫助,但值得一試:
<a href="/path_to_same_page" target="mywindow" onclick="window.open('/path_to_same_page', 'mywindow', 'toolbar=0,status=0,resizable=1');">Click here...</a>
有了這個,窗口將不會通過腳本最初打開,而是由target
屬性。
號我打算。作爲一個彈出窗口打開新窗口,沒有地址欄,工具欄的東西.. –
我知道,onclick中的代碼應該處理這個問題。你試過了嗎? –
請注意,報告的問題是因爲onclick,因爲它會在新的IE進程中打開新窗口,而不會從父窗口重用cookie。 –
你在你的答案說,
父頁面被嵌入在我們的Windows應用程序
實際上有一個IE網頁瀏覽器控制主機是一個解決這個問題。您的應用程序需要處理NewWindow2
事件以便維護跨窗口的會話。
請參閱下面的MSDN資源的詳細信息,這一點:
也許有些瀏覽器設置。你無法真正控制這樣的事情。 –
這可能是一個IE特定的問題。請參閱http://kbalertz.com/196383/Windows-Opened-Script-Authentication-Session.aspx –
可能是這種情況..您可以使用JS識別瀏覽器類型和版本,以及舊IE是否顯示某些警報或消息。 –