在 Edge 浏览器中,如何执行 window.open() 并且不在新窗口或标签中保持会话?
Posted
技术标签:
【中文标题】在 Edge 浏览器中,如何执行 window.open() 并且不在新窗口或标签中保持会话?【英文标题】:In Edge browser, how can I do window.open() and not keeping session in the new window or tab? 【发布时间】:2021-01-14 05:32:00 【问题描述】:使用 Edge 浏览器,我想在不保留当前窗口会话的情况下打开一个新窗口和/或标签。
我让它像这样在 Firefox 上工作: 打开新窗口 -> window.open('mySiteURL', '_blank', 'status=no,noopener=yes'); 打开新标签 -> window.open('mySiteURL', '_blank', 'noopener=yes');
我想为 Edge 浏览器实现同样的功能。
【问题讨论】:
这有帮助吗? ***.com/questions/2257631/… 【参考方案1】:IE 可以为不同窗口和选项卡中的内容创建多个内容进程。
如果您的应用程序托管了一个 webbrowser 控件,该控件随后会启动一个完整的 IE 窗口,那么您的新 URL 可能是由另一个进程 (iexpore.exe) 而不是您的应用程序进程请求的。因此,请求无法访问会话 cookie,因此会话显示为“丢失”。
(值得注意的是,同一进程树中的多个 iexplore.exe 进程实例具有相互共享会话 cookie 的方法。
Opening a new window create a new session
【讨论】:
【参考方案2】:我将为您要打开的每个新窗口或选项卡创建一个新驱动程序缓冲区。
当您使用 JS window.open() 函数时,
只需执行driverOfOldWindow.close()
,它将关闭上一个窗口。
不要使用driverOfOldWindow.quit()
,因为它会关闭所有浏览器窗口,这不是您可能想要做的,因为您的 WebDriver 可能已经打开了您可能希望仍在工作的其他窗口。
要管理标签,只需使用getAllWindowHandles()
函数并在您也想关闭的标签上调用close()
方法。
Look here
【讨论】:
以上是关于在 Edge 浏览器中,如何执行 window.open() 并且不在新窗口或标签中保持会话?的主要内容,如果未能解决你的问题,请参考以下文章