在浏览器中检测 URI 方案支持



是否有一种类似 Modernizr 的方法来检测客户端对 uri 方案的支持,例如 <a href="sms:1-408-555-1212">New SMS Message</a><a href="whatsapp://send?text=Foo">New WhatsApp Message</a>为了有条件地显示此类链接?

可能相关

检查 JavaScript 中是否支持 URL 方案

是否有类似于iOS的canOpenURL来检查移动浏览器的URL方案?

您可以使用一些技巧,但是如果您必须在Windows 8之前在Windows上处理IE <11甚至IE 11,那么您不会喜欢我的回答。

通常,如果遵循这些 URL 会产生副作用,则无法检测对 URL 方案的支持。

您可以做的是尝试在 iframe 中打开这些 URL 之一。因此,您将 iframe 附加到正文(或您想要的任何位置),然后将其 href 设置为特殊 url。

在 Mozilla 浏览器中,如果不支持 URL 方案,您将收到异常。在基于 Webkit 的浏览器(和 Chrome)中,什么都不会发生。

因此,除非你在Mozilla上,否则甚至没有办法找出你为什么这样做是否有效。

在Windows 8及更高版本的IE11中(但不是在早期版本的Windows下 - 缺少该方法),您可以使用window.natigator.msLaunchUri启动该特殊URL。如果不支持 URI 方案,也会抛出此情况。

不幸的是,这可能真的会阻碍你想要做的事情:无论你使用什么技巧:如果该方案不受支持,并且你尝试在任何不支持msLaunchUri的IE版本上启动它,你的页面将被错误页面取代,没有办法阻止这种情况发生。

我什么都试过了。iframe 技巧会导致错误消息。尝试window.open会导致错误消息或不执行任何操作,具体取决于天气。设置 img URL 不会导致错误(好),但也不会导致 URL 实际启动(坏)。

除非你得到要启动的URL的应用程序的合作(例如,如果安装了应用,则告诉IE污染User-Agent标头),否则你在IE中就不走运了。

是的 - 很可能不是你想听到的,对不起。

最新更新