2012-03-19 31 views
2

我的web应用程序需要检测我们的桌面应用程序是否安装在用户的PC上。 (这个应用程序是通过自定义应用程序协议从网络应用程序启动的。)我们目前有一个“hack-ish”方法,但它在IE10中被破解。做一些研究,我遇到了这篇文章。有没有人得到JavaScript msProtocols属性在IE10中工作?

Understanding Protocols

向底部,它说明了如何在Windows 8 IE10 &,你现在可以检测为使用JavaScript特定的应用程序协议处理程序。更多细节可以在这个站点找到:msProtocols property。根据实例,我应该可以做这样的事情:

if (navigator.msProtocols["myProtocol"]) { 
    location.href = "myProtocol://<Some path under the myProtocol protocol>"; 
} else { 
    // Fallback code for when the "myProtocol" protocol doesn’t exist. 
} 

我试图得到这个工作,但失败了。即使使用调试器,并查看导航器对象,也没有msProtocols属性。

有没有人能够得到这个工作?

+2

找出我自己的问题。应该是我检查的第一件事情之一,但我的浏览器模式和文档模式设置不正确。一旦我将它们设置为IE10 - 标准,一切都很好用! – 2012-03-19 17:44:33

回答

1

无论何时您使用Internet Explorer 8+进行测试,请确保您的浏览器模式和文档模式设置为适当的状态。例如,如果浏览器模式低于Internet Explorer 10并且文档模式不是标准,则会阻止您访问msProtocols成员。

按F12键显示开发工具,检查这些设置。在是否应该使用这个成员与否,the documentation状态的大局观:

该成员不支持,不应该被使用。确定指定的协议是否具有关联的协议处理程序。

无论您是否使用这个成员找到成功,我都会避免它并找到替代方案。

相关问题