如何在Web应用程序中检测tel: URI方案的可用性?

17

我想在网页应用中使用tel: uri方案(rfc3966)使电话号码可在移动设备上链接,但我希望在无法处理tel:方案的设备上不链接它们 - 如桌面电脑或没有电话功能的移动设备(如iPad!)

有什么方法可以检测这一点吗?如果可能的话,我希望避免用户代理嗅探。

iPhone似乎有一个canOpenURL函数,应用程序可以使用它进行测试,但我想从Javascript获取相同的行为。

3个回答

4

检测浏览器是否支持tel URI方案没有标准方法。

但是,您可以使用用户代理嗅探库,例如出色的WURFL库来检测此功能。


你是否知道过去一年里这种情况有没有发生很大的变化?(我猜应该没有。)谢谢你的回答。 - Pointy
据我所知,目前还没有这样的功能。如果能够支持JavaScript来检测电话号码,那将是非常好的。最好的方法是在页面上直接放置电话号码,并希望手机能够将其识别为电话号码并将其转换为相应的tel:链接。 - James Goodwin
是的,尽管丑陋的部分不仅在于它是否在手机上有用,还在于桌面浏览器是否会变得笨拙。桌面版Firefox会给用户一个漂亮的对话框,解释URL方案未被识别,这当然对于只是查看页面的普通人来说是完全浪费的。再次感谢! - Pointy
用户代理嗅探不是答案,用户代理字符串无法确定设备是否具有能力,提供的信息根本不足。Skype是否已安装?这个Android设备是平板电脑还是在PC上运行? - Chris Seufert

1

iPhone会自动识别一般文本是否为电话号码格式,并将其转换为可点击的链接。您无需付出任何努力。

例如,如果您在网站上有文本“+61(0)7 3000 0000”,iPhone会知道它是一个号码并将其变成链接。


1
其他移动开发人员告诉我最好将此功能关闭,因为它倾向于将其他内容也变成可点击的链接,例如邮政编码、邮政信箱和其他一些长字符串。这个建议可能已经过时了 - 有人知道这是否仍然是一个问题吗? - Korny
8
@Korny 这是一个问题/功能,具体取决于您认为它有多有用。您可以通过使用 <meta name="format-detection" content="telephone=no"> 来禁用它。 - James Goodwin

0

MobileESP 项目提供了多种服务器端语言的 API,以及客户端 JavaScript API。

哦!而且它是免费且开源的(我相信是 Apache 许可证)


这基本上是用户代理嗅探。 - Chris Seufert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接