【问题标题】:window.open doesn't open in same sessionwindow.open 不在同一会话中打开
【发布时间】:2011-09-28 15:53:33
【问题描述】:

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

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

【问题讨论】:

  • 可能是一些浏览器设置..你无法真正控制这样的事情。
  • 这可能是特定于 IE 的问题。见kbalertz.com/196383/…
  • 可能是这样..你可以用JS识别浏览器类型和版本,如果旧IE显示一些警报或消息。
  • 不,我们在 IE 上非常需要这个 :(
  • 所以请用户升级到 IE9 或至少 8 - 完全合法,即使是主要网站也不再支持古老的浏览器。

标签: javascript session


【解决方案1】:

你在回答中说

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

这个问题其实是有解决办法的。您的应用程序需要处理 NewWindow2 事件以维持跨窗口的会话。

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

【讨论】:

  • 已修复,我已将链接替换为 archive.org 上的缓存文章。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试这个解决方法,不确定它是否有用,但值得一试:

    <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。
    【解决方案4】:

    首先使用encodeURL("") 对该url 进行编码;然后添加javascript文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2011-12-25
      • 2013-04-07
      • 2012-02-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多