2011-07-05 16 views
5

我在JSP頁面上使用下面的定位標記來從同一個應用程序打開另一個頁面,但是新窗口並未在同一個會話中打開,而是重定向到我的應用程序的登錄頁面。任何線索爲什麼?window.open不會在同一會話中打開

<a href="#" onclick="window.open('/path_to_same_page', '_blank', 
     'toolbar=0,status=0,resizable=1'); return false;">Click here...</a> 
+0

也許有些瀏覽器設置。你無法真正控制這樣的事情。 –

+0

這可能是一個IE特定的問題。請參閱http://kbalertz.com/196383/Windows-Opened-Script-Authentication-Session.aspx –

+0

可能是這種情況..您可以使用JS識別瀏覽器類型和版本,以及舊IE是否顯示某些警報或消息。 –

回答

2

此行爲背後的原因是,父頁面託管在我們的Windows應用程序中嵌入的IE瀏覽器控件上。當它創建一個新窗口(使用window.open或target =「_ blank」)時,新窗口由iexplore.exe進程擁有,並且不會從我們的應用程序擁有的父IE窗口繼承會話cookie處理。這個問題沒有通用的解決方案。在我們的例子中,我們使用某種單點登錄來共享兩個窗口實例之間的會話上下文。

-4

首先使用encodeURL(「」)對該url進行編碼;然後添加在JavaScript文件

+1

真的不相關 –

1

嘗試這種解決方法,不知道它會幫助,但值得一試:

<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屬性。

+0

號我打算。作爲一個彈出窗口打開新窗口,沒有地址欄,工具欄的東西.. –

+0

我知道,onclick中的代碼應該處理這個問題。你試過了嗎? –

+1

請注意,報告的問題是因爲onclick,因爲它會在新的IE進程中打開新窗口,而不會從父窗口重用cookie。 –

1

你在你的答案說,

父頁面被嵌入在我們的Windows應用程序

實際上有一個IE網頁瀏覽器控制主機是一個解決這個問題。您的應用程序需要處理NewWindow2事件以便維護跨窗口的會話。

請參閱下面的MSDN資源的詳細信息,這一點: