在我的网站上,我有几个这样的链接:
<a href="tel://+12181112222" class="call">218.111.2222</a>
我想使用jQuery(或其他方法)来确定设备是否支持使用tel://协议进行调用。世界上是否存在这种方法?
我想使用一些方法启用或禁用链接,因为当点击桌面时,我们会看到一个页面,例如“Firefox不知道如何打开此地址,因为协议(tel)与任何节目。“
目前,我正在嗅探用户代理并检测它是否是移动设备。但是,有更好/准确的方法吗?像jQuery的$.support.xx
?
if ( (/iPhone|iPod|iPad|Android|BlackBerry/).test(navigator.userAgent) != true ){
$(".call").attr("href", "#");
}
答案 0 :(得分:12)
我不确定Android或黑莓手机,但iOS会自动提取电话号码并将其包装起来:<a href="tel:xxx">xxx</a>
...所以你可以在某处包含一个隐藏的<div>
电话号码如1-800-555-5555,然后,在页面加载时执行以下操作:
var isTelephone = $("a[href*='tel:']").length > 0;
这可能是也可能不是可移植到其他平台,你必须尝试。
答案 1 :(得分:2)
有人可能会在其中找到带有tel://的href的第一个实例并发布ajax调用。如果成功,它的readyState应为1,所以什么也不做。失败时,使用tel://查找所有href并获取内部html并替换a标记。
这更像是一种假设而未经过测试。
另一个想法是大多数浏览器都有自定义支持电话号码格式的字符串,如果你放在一个电话号码,你不应该创建一个标签,因为它应该自动完成。
答案 2 :(得分:2)
我正在使用以下内容检测其 PROBABLY 手机,然后再将一个非链接元素添加到tel链接中:
var probablyPhone = (
(/iphone|android|ie|blackberry|fennec/).test
(navigator.userAgent.toLowerCase())
&& 'ontouchstart' in document.documentElement
);
我排除ipod | ipad,因为我知道它们不是手机
这里的关键点是 PROBABLY 它当然会返回真正的一些平板电脑设备,但这足以我的目的在非手机触摸设备上链接将无论如何也会失败 - 我主要只想排除桌面因此触摸事件检测。我想同时检查设备宽度也会缩小范围,但最终无法保证检测到能够拨打我的电话的移动设备。
答案 3 :(得分:1)
某些有限的解决方案可以成为检测某些纯手机的方法。但并非所有可能:
(function(a) {
window.isPhone = /\bi?Phone\b|(?=.*\bAndroid\b)(?=.*\bMobile\b)|(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i.test(a);
})(navigator.userAgent || navigator.vendor || window.opera);
console.info('This device %s make phone calls', window.isPhone ? 'is originally intended to' : 'probably can\'t' );