当前位置: 首页 > 知识库问答 >
问题:

使用jQuery检测设备是否可以拨打电话(支持“tel://”协议)

耿敏达
2023-03-14

在我的网站上,我有几个链接,如下所示:

<代码>

我想使用jQuery(或其他方法)来确定设备是否支持拨打电话/使用tel://协议。世界上有这样的方法吗?

我想使用一些方法来启用或禁用链接,因为当点击桌面时,我们会出现一个页面,比如“Firefox不知道如何打开这个地址,因为协议(tel)不与任何程序相关联。

目前,我正在嗅探用户代理并检测它是否是一个移动设备。但是,有没有更好/准确的方法呢?类似jQuery的< code>$.support.xx这样的东西?

if ( (/iPhone|iPod|iPad|Android|BlackBerry/).test(navigator.userAgent) != true ){
    $(".call").attr("href", "#");
}

共有3个答案

庄新翰
2023-03-14

在将非链接元素增强为电话链接之前,我使用以下方法检测手机:

var probablyPhone = (
    (/iphone|android|ie|blackberry|fennec/).test
     (navigator.userAgent.toLowerCase())
     && 'ontouchstart' in document.documentElement
  );

我排除ipod|ipad,因为我知道它们不是手机。

这里的关键点可能是,它当然会返回真实的一些平板设备,但这足以让我在一个非手机触摸设备上链接无论如何都会失败-我主要是想排除桌面,因此触摸事件检测。我想检查设备宽度也会缩小范围,但最终没有保证的方法来检测我发现的能够打电话的移动设备。

殷宇
2023-03-14

也许可以找到带有tel://的href的第一个实例并发布ajax调用。如果成功,它应该有一个readyState 1,所以什么都不做。失败时,找到所有带有tel://的hrefs并获取内部html并替换a标签。

这更像是一个假设,未经检验。

另一个想法是,大多数浏览器都有对电话号码格式字符串的自定义支持,如果你输入一个电话号码,你不应该创建一个标签,因为它应该自动完成。

昝浩阔
2023-03-14

我不确定Android或BlackBerry,但iOS会自动拾取电话号码并像这样包装它们:

var isTelephone = $("a[href*='tel:']").length > 0;

这可能可以移植到其他平台,也可能不可以,您必须尝试一下。

 类似资料:
  • 我想检查正在打的电话是否是国际电话。我有使用TelephonyManager获得的SIM卡号码。getLine1Number()以及我使用TelephonyManager获取的SIM卡的国家/地区代码ISO。getSimCountryIso()。 我能找到打电话的号码的国家代码吗?

  • 拨打电话     拨打电话给 Skype 联系人。开始通话前,需先让支援PSP™版 Skype 的音频输入设备连接PSP™主机。 从联系人名单选择拨打对象 1. 进入 Skype 的选单画面后选择(联系人)。 2. 从联系人名单中选择电话的拨打对象。 可拨打电话给登入状态为(在线)等可通话状态的联系人。 开始呼叫后,会显示对方的名字或 Skype 账号。对方回复后即可开始通话。 提示 透过 Sky

  • 问题内容: 我的应用使用,但是较旧的设备(特别是支持iOS 8的iPad 2和3)不支持模糊处理。 我想检查用户设备是否支持模糊。我该怎么做? 问题答案: 有一种看似有希望的内部方法,但是您的应用程序当然会被Apple拒绝。让我们创建自己的方法: 首先,我们需要知道我们正在使用的确切设备类型: 例如,这将返回iPad 2。这是iDevice型号的更新列表:https : //theiphonewi

  • 问题内容: 我正在尝试拨打的电话不是使用特定号码,而是使用在变量中被调用的号码,或者至少告诉它在您的电话中提取该号码。这个在变量中被调用的数字是我使用解析器或从网站sql检索到的数字。我做了一个按钮,试图用一个函数调用存储在变量中的电话号码,但无济于事。一切都会帮助谢谢! 问题答案: 试一试: 假设电话号码在。 的返回Optional,因此使用可以确保它是(而不是)返回的。 对于Swift 3:

  • 问题内容: 我正在使用JDBC做一个Android应用程序,而不使用任何Web服务将数据发送到数据库。我使用Android 2.2模拟器进行了实验,并且能够将数据发送到MySQL DB(LOCALHOST)。之后,我尝试使用Android 2.2设备进行发送,然后更改了with 的路径 。 xx.xx.xx.xx来自我的本地主机。但是它在设备中不起作用。可能是什么原因。 主要疑问: Android

  • 拨打普通电话(SkypeOut)     使用  Skype ,对传统的电话回线拨打电话。若要使用此机能,需先购买 Skype 点数。 1. 进入  Skype 的选单画面后,选择(拨号)。 2. 选择[国家或地区],从清单中选择国家或地区。 3. 选择[电话号码]后,输入号码并选择[确定]。 4. 选择[通话]。 对方接听后,即可开始通话。 重要 无法使用  Skype 拨打紧急电话。