2

我的 Web 应用程序需要检测我们的桌面应用程序是否安装在用户的 PC 上。(此应用程序是通过自定义应用程序协议从 Web 应用程序启动的。)我们目前有一个“hack-ish”方法工作,但它在 IE10 中被破坏了。做了一些研究,我发现了这篇文章。

了解协议

在底部,它解释了如何在 Windows 8 和 IE10 上,您现在可以使用 javascript 检测特定的应用程序协议处理程序。可以在此站点上找到更多详细信息:msProtocols 属性。根据示例,我应该能够执行以下操作:

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 属性。

有没有人能让这个工作?

4

1 回答 1

1

每当您使用 Internet Explorer 8+ 进行测试时,请确保您的浏览器模式和文档模式设置为适当的状态。例如,使用低于 Internet Explorer 10 的浏览器模式和标准以外的文档模式将阻止您访问该msProtocols成员。

通过按 F12 以显示开发人员工具来检查这些设置。在您是否应该使用此成员的更大范围内,文档指出:

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

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

于 2012-06-06T05:37:22.737 回答