window.open无法在同一会话中打开

时间:2011-07-05 09:32:06

标签: javascript session

我在JSP页面上使用下面的锚标记从同一个应用程序打开另一个页面,但是新窗口没有在同一个会话中打开,而是重定向到我的应用程序的登录页面。任何线索为什么?

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

4 个答案:

答案 0 :(得分:2)

此行为背后的原因是,父页面托管在我们的Windows应用程序中嵌入的IE Web浏览器控件上。当它创建一个新窗口(使用window.open或target =“_ blank”)时,新窗口由iexplore.exe进程拥有,并且不会从我们的应用程序拥有的父IE窗口继承会话cookie。处理。这个问题没有通用的解决方案。在我们的例子中,我们使用某种单点登录来共享两个窗口实例之间的会话上下文。

答案 1 :(得分:2)

你在答案中说明了

  

父页面托管在我们的Windows应用程序中嵌入的IE Web浏览器控件

实际上有一个解决这个问题的方法。您的应用程序需要处理NewWindow2事件,以便跨窗口维护会话。

有关详细信息,请参阅以下MSDN资源:

答案 2 :(得分: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属性打开。

答案 3 :(得分:-4)

首先使用encodeURL(“”)编码该url;然后添加javascript文件