我在JSP页面上使用下面的锚标记从同一个应用程序打开另一个页面,但是新窗口没有在同一个会话中打开,而是重定向到我的应用程序的登录页面。任何线索为什么?
<a href="#" onclick="window.open('/path_to_same_page', '_blank',
'toolbar=0,status=0,resizable=1'); return false;">Click here...</a>
答案 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文件