以下代码假设在外部应用程序中打开URL:
var a = document.createElement('a');
a.href = 'myprotocol:jdoe@example.com;fromuser=John%20Doe;mode=audiovideo';
document.body.appendChild(a);
a.click();
如果未安装该应用,则在某些PC上Chrome会无声地失败,而在其他PC上则会显示此窗口:
这种行为在哪里定义?
答案 0 :(得分:0)
如果要在Windows中注册应用程序以处理特定的URI架构,则应在注册表中注册。我在MSDN article和Google搜索" Registering an Application to a URI Scheme"提供了大量的例子。
HKEY_CLASSES_ROOT/
your-protocol-name/
(Default) "URL:your-protocol-name Protocol"
URL Protocol ""
shell/
open/
command/
(Default) PathToExecutable
您可以使用navigator.registerProtocolHandler
使用谷歌浏览器register a custom protocol handler(Firefox也有此功能)。
navigator.registerProtocolHandler(
'web+mystuff', 'http://example.com/rph?q=%s', 'My App');
请注意,您的协议必须以web+
开头。否则,您将收到SECURITY_ERR: DOM Exception 18
错误。
或者,如果您正在开发Chrome应用,那么您可以在清单文件中register your handlers。
"url_handlers": {
"view_foo_presentation": {
"matches": [
"https://www.foo.com/presentation/view/*"
],
"title": "View Foo presentation"
}
}
您还可以查看Chrome网址(chrome://chrome-urls/
),看看是否可以在任何设置中进行更改。