我做了以下事情:
1)在Windows 7中:在注册表中:HKEY_CLASSES_ROOT\PROTOCOLS\Handler
我有自定义协议调用:stackoverflow
(在注册表中以类似的方式复制,如其他协议mailto
或ftp
等)
2)在IE中打开样本:http://jsfiddle.net/L528u/
<a href="stackoverflow:talking" id="link1">CLICK IT</a>
<button onclick="alert(document.getElementById('link1').protocolLong);">CHECK - IF - Protocol available or not</button>
3)单击IE中的按钮以检测协议:stackoverflow失败
我总是得到警告框:“未知协议”但是当我尝试检测协议时:ftp,mailto it works
<a href="ftp:talking" id="link1">CLICK IT</a>
<button onclick="alert(document.getElementById('link1').protocolLong);">CHECK - IF - Protocol available or not</button>
问题:任何人都可以告诉我注册表项中缺少什么来激活新协议? “stackoverflow”(其中ftp,mailto有效,但不是stackoverflow)
答案 0 :(得分:1)
Internet Explorer仅通过protocolLong显示内置协议。您无法在注册表中添加任何内容以允许基于Web的应用程序协议检测。
答案 1 :(得分:1)
Windows 8上的Internet Explorer 10(及更高版本)(稍后请注意,Windows 7未包含在内!请参阅msLaunchUri not available in IE11)实现了一个成功的新方法和一个可以帮助协议处理程序的错误回调参数调用情境 - navigator.msLaunchUri(uri, successCallback, noHandlerCallback)
。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ie/jj154912(v=vs.85).aspx