尝试从Chrome浏览器在IE窗口中打开链接

时间:2018-11-02 18:16:45

标签: html internet-explorer cross-browser

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

我找到了一种可行的解决方案 例如。

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

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

尝试过
'ie','iexplore','internet-explorer'

我也不能依靠用户在浏览器中安装“ open in”扩展名。

由于webapp将在公司系统中运行,因此我可能会选择编辑注册表的路线,但是只是想在此处查看一下此路线。

2 个答案:

答案 0 :(得分:3)

看来IE并未将自己注册为URI方案。

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

当然,最好的方法是完全避免使用Internet Explorer,因为它已被弃用。但是,如果您坚持使用它,则似乎只能自己编辑注册表。

答案 1 :(得分:-1)

最简单的解决方案是为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用双引号引起来。否则,带有多个参数(例如example.com?a=1&b=2)的url将被剥离为example.com?a=1,在{{1}之后的参数}将被忽略。
  2. 调用& 时必须删除双引号。如果您不删除双引号并从chrome打开多个IE窗口,则只有第一个IE窗口将获得正确的URL。但是用命令iexploreset url=%%url:\"=%%删除引号是行不通的。
  3. 如果您无法删除这些引号,请将开关set url=%%url:~1,-1%%-nosessionmerging添加到-noframemerging这些是command-line options控制IE的“合并”行为。