我在使自定义协议处理程序启动 IE 行为正确时遇到问题。
这是我想要做的:我有我的网页,用户需要在 chrome 中访问。该页面包含一些外部 Web 应用程序的链接。这些外部 Web 应用程序仅在 Internet Explorer 上运行良好。单击链接时,我必须以某种方式使用外部网络应用程序的 URL 启动 IE。
客户不愿意使用 IETab 之类的插件来启动这些外部应用程序。
因此,我尝试定义一个自定义协议处理程序,它将目标 URL 作为参数并使用目标 URL 启动 Internet Explorer 浏览器。
只要没有 IE 窗口已经打开,它似乎就可以正常工作。但是当已经有一个 IE 实例正在运行时,行为会有所不同。
我使用了以下代码:
在 HTML 文件中:
function launchIE(target){
window.location = "launchIE:\"http://external.url.com?param1=1¶m2=2\"";
}
通过将以下内容添加到 Windows 注册表中,我已将处理程序注册到自定义协议“launchIE”:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\launchIE]
"URL Protocol"="\"\""
@="\"URL:launchIE Protocol\""
[HKEY_CLASSES_ROOT\launchIE\DefaultIcon]
@="\"iexplore.exe,1\""
[HKEY_CLASSES_ROOT\launchIE\shell]
[HKEY_CLASSES_ROOT\launchIE\shell\open]
[HKEY_CLASSES_ROOT\launchIE\shell\open\command]
@="cmd /C set myvar=%1 & call set myvar=%%myvar:launchIE:=%% & call start /separate iexplore %%myvar%% & exit"
通过上述设置,当我单击按钮触发上述 javascript 时,我启动了 Internet Explorer。如果没有 Internet Explorer 的实例已经打开 ,IE 会正确打开 URL http://external.url.com?param1=1¶m2=2 。显示正确 URL 的 IE 屏幕截图
但是,如果已经打开了一个 IE 实例(无论是由用户手动打开,还是由于事先单击了我页面上的按钮),IE 会打开一个不正确的 URL http://%22http//external.url.com? param1=1¶m2=2 " IE 显示错误 URL 截图
请帮助...我应该如何解决这个问题?
我正在使用 Windows 10 和 IE 11。