编写一个自定义协议处理程序,可在 Firefox、Chrome 和 IE 上移植,运行在 Windows 上



我正在编写一个协议处理程序来启动Java应用程序,调用像java -jar myApp '%1'这样的命令。目前我已经为 Chrome 实现了它,它看起来工作得很好。不幸的是,我对火狐和IE的行为不同(奇怪呃?!X-D (

这是我的实现。

该协议名为 dgh。在第一次安装期间,我的应用程序在Windows注册表中设置了以下项

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTdgh]
@="URL:DgHome  Protocol"
"URL Procol"=""
[HKEY_CLASSES_ROOTdghDefaultIcon]
@="C:/DGHOME/IPlusConf.exe,1"
[HKEY_CLASSES_ROOTdghshell]
[HKEY_CLASSES_ROOTdghshellopen]
[HKEY_CLASSES_ROOTdghshellopencommand]
@="java -jar C:/DGHOME/Pch/lib/pch.teleconsulto.jar "%1""

在铬上,这就足够了。在 Firefox 上,我不得不在 about:config 中添加一些配置。在火狐浏览器上的MDN之后,我设置了以下内容

network.protocol-handler.expose.dgh;true
network.protocol-handler.external.dgh;true
network.protocol-handler.warn-external.dgh;false

这样,Firefox 至少会问我是否要启动一个应用程序并要求我选择一个: 我不希望那样,我会调用我设置的命令并在第一次向用户提出建议:

在IE上没有任何反应,它说无法通过我的链接打开网页引用。

这里有一组我用作测试的链接

<a href="dgh://call/open?id='kit1.teleconsulto'">Open call to kit1.teleconsulto</a>
<a href="dgh://teleconsult/start?id='kit1.teleconsulto'">
   Open teleconsult to kit1.teleconsulto</a>
<a href="dgh://call/close">Close call</a>
<a href="dgh://call/end">Close client</a>
<a href="dgh://stethoscope/start">On Phonendo</a>

这里有一些参考资料:安装和注册协议处理程序http://msdn.microsoft.com/en-us/library/aa767916%28VS.85%29.aspx

真诚希望有人能帮助我

您遇到的问题是直接在协议处理程序中调用 jar。您需要使用 -jar 参数调用 java.exe

您的注册表项应如下所示

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTdigitalmgi]
@="URL:digitalmgi protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOTdigitalmgiDefaultIcon]
@="C:\myCoolIcon.ico"
[HKEY_CLASSES_ROOTdigitalmgiShell]
[HKEY_CLASSES_ROOTdigitalmgiShellOpen]
[HKEY_CLASSES_ROOTdigitalmgiShellOpenCommand]
@=""C:\Program Files\Java\jre7\bin\java.exe" -jar "C:\MyPath\myJar.jar" "%1""
我知道

您已经采取了在系统注册表中注册的方法,但是,如果您愿意采取不同的方法,那么,通用协议处理程序中有一个通用解决方案,它肯定会解决跨浏览器兼容性问题。

如果它对:)有帮助,请将其标记为答案

相关内容

  • 没有找到相关文章

最新更新