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

时间:2016-02-23 09:43:18

标签: html browser modernizr feature-detection uri-scheme

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

  

可能相关

     

Check if URL scheme is supported in javascript

     

Is there something similar to iOS's canOpenURL to check URL schemes for mobile browsers?

1 个答案:

答案 0 :(得分:3)

你可以使用一些技巧,但如果你必须处理IE&lt;在Windows 8之前的Windows上,甚至是IE 11,你都不会喜欢我的回复。

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

您可以尝试在iframe中打开其中一个网址。因此,您可以将iframe附加到正文(或任何您想要的位置),然后将其href设置为特殊网址。

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

因此,除非您使用Mozilla,否则甚至无法确定您完成的原因是否有效。

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

不幸的是,这可能会对你想要做的事情产生影响:无论你使用什么技巧:如果不支持该方案,你试图在任何不支持的IE版本上启动它msLaunchUri,您的网页将被错误页面取代,并且无法阻止此情况发生。

我已经尝试了一切。 iframe技巧导致错误消息。尝试window.open会导致错误消息,或根据天气不执行任何操作。设置img URL不会导致错误(好),但也不会导致URL实际启动(错误)。

除非您与该应用程序的合作,您将要启动(例如,如果安装了该应用程序,告诉IE污染用户代理标题),那么您运气不好IE。

是的 - 很可能不是你想听到的,我很抱歉。