尝试从 Chrome 浏览器在 IE window 中打开 link

Trying to open a link in IE window from Chrome browser

我看到有人在这里问过这个问题 Can I force a link to open in a specific browser?

我找到了一种有效的解决方案 例如

window.open("microsoft-edge:https://www.google.com");

这适用于 Edge,但我正在寻找类似的解决方案以在 Internet Explorer 中打开。

尝试过
ieiexploreinternet-explorer

我也不能指望用户在浏览器中安装 'open in' 扩展程序。

我可能会沿着编辑注册表的路线走下去,因为 webapp 将 运行 在企业系统中,但只是想在走那条路之前先在这里检查一下。

看来 IE 没有将自己注册为 URI 方案。

为了让应用程序(在本例中为浏览器)侦听 URI 方案,它需要在注册表中注册(至少 Windows)。我只是 运行 一个列出所有已注册 URI 方案的小脚本,与 Edge 不同,我没有看到任何代表 Internet Explorer 的东西。 (我确实安装了它)。

当然,最好的方法是完全避免使用 Internet Explorer,因为它已被弃用。但如果你坚持下去,自己编辑注册表似乎是唯一的选择。

最简单的解决方案是为 IE 添加一个 URI 方案,ie:http://example.com 格式的链接将启动 IE 并访问 http://example.com

要为 IE 添加 URI 方案,请添加 this registry:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"=""
@="URL:IE Protocol"

[HKEY_CURRENT_USER\Software\Classes\ie\shell]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]

[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /c set url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"

一些重要说明:

  1. 您必须将 %1 括在双引号中。 否则 url 具有多个参数,例如 example.com?a=1&b=2 将被剥离为 example.com?a=1, & 之后的参数将被忽略。
  2. 您必须在调用 iexplore 时删除双引号。如果不去掉双引号,从chrome打开多个IEwindow,只有第一个IEwindow会得到正确的URL。但是使用命令 set url=%%url:\"=%%set url=%%url:~1,-1%% 删除引号不起作用。
  3. 如果您无法删除这些引号,请将开关 -nosessionmerging-noframemerging 添加到 iexplore 这些是command-line options 控制 IE 的 "merging" 行为。