有没有办法检测移动设备是否能够拨打语音电话/短信?
在网页中应用tel:
和sms:
链接时,这一点非常重要。仅仅检测手机是不够的,因为平板电脑无法拨打电话,iTouch无法拨打电话等。
我对使用设备大小,UA字符串检测等的移动检测黑客不感兴趣。我想使用功能检测来确定设备是否能够进行语音呼叫/ SMS短信。我喜欢通用解决方案,但我主要对iOS / Android感兴趣。
答案 0 :(得分:12)
我还没有看到一种明显的方法可以看到sms:
和tel:
链接得到特殊处理。
更新:下面的@janogosteve已确认目前没有可靠的功能检测。这看起来无法察觉。
这是检查此功能检测的综合方法。 (阅读下面的jangosteve评论!)
getComputedStyle
获取有关它们的详细信息,并将其投入到对象中JSON.stringify
(这些东西让你以后可以处理它)在iOS设备和桌面Safari / Chrome中执行上述操作
然后JSON.parse
他们回到对象中...并使用https://github.com/NV/objectDiff.js来查看是否可以发现任何差异。
答案 1 :(得分:5)
此问题的新情节(截至2015年2月)是许多桌面浏览器现在支持点击通话,但是它们不会自动检测电话号码。
因此,为了嗅出电话号码自动检测或触控功能而漂浮的漂亮技巧现在已经过时了。
Mac OSX,因为Yosemite 10.9.2支持使用Facetime音频的点击呼叫,而Windows 8 / IE11使用Skype也是如此。不确定Chrome操作系统(环聊?)。 iPad使用Facetime音频通话。
从现在开始,所有网络浏览器都支持点击通话。问题是如何防止旧版浏览器和桌面操作系统用户在点击tel:
链接时出错。
我创建了一个Javascript库,试图检测tel:
链接支持之前的旧桌面操作系统用户,但事实证明这是非常有问题和复杂的。
现在我的方法是:
<a>
代码和桌面,让自动检测功能在移动设备上实现链接魔力我对这些解决方案并不感到骄傲,但我选择了B,直到浏览器支持格局在未来发生变化。这样我可以控制<a>
标签,桌面用户仍然可以点击手机#,如果他们真的想要,我将来可以轻松交换。