可点击的电话协议A标签在Firefox中

13

我的电话号码链接用的是很标准的a标签,除了火狐浏览器以外,其他浏览器都能正常使用。我以为“tel”协议是标准的,难道还有什么我不知道的解决办法吗?

<a class="tel" href="tel:8001234567">(800) 123-4567</a>

火狐错误信息:

地址无法理解

Firefox 不知道如何打开这个地址,因为协议(tel)没有与任何程序关联。

您可能需要安装其他软件来打开此地址。


我会查看这个问题和答案:https://dev59.com/aHM_5IYBdhLWcg3w8H82 - gotohales
已经完成了。答案都过时了 - 那时候(tel)的使用和支持还不如(callto)广泛。而火狐浏览器特定的问题让我感到困惑。在我看来,(tel)是非常标准的。 - snakesNbronies
1
我不认为这有什么令人困惑的。Firefox只是没有实现对“tel”的支持。 - matthewpavkov
你似乎没有仔细阅读,这个问题最后更新于2012年4月。为什么你期望Firefox能够在没有其他插件的情况下理解tel:协议呢? - robertc
你看到Mordy的回答了吗?它可以解决你的问题,而且并不是很老。 - gotohales
是的 - 我看到了那个答案。Callto不是答案。和tel一样出现错误。 - snakesNbronies
4个回答

7

Firefox并不为每种协议配备一个程序。在这种情况下,用户需要在设置中指定一个程序。除了用Skype引入的非官方callto:替换之外,服务器端没有任何绕过此问题的方法。


1
callto: 也出现了与 tel: 相同的错误 - 不确定是否特定于我的 Firefox 版本(Ubuntu 12.10 上的 18.0)。 - snakesNbronies
1
“tel”和“callto”在Firefox(或任何桌面浏览器)中根本不起作用。您必须安装第三方扩展程序/程序来支持此功能。无论如何,为什么桌面浏览器会自动支持这个功能呢?除非安装了处理电话号码/呼叫的软件,否则浏览器无法使用它进行任何操作。移动浏览器是另一回事。此外,当我单击“tel”链接时,Chrome不会执行任何操作(与Firefox相反,后者显示您在问题中所述的页面)。 - matthewpavkov
@mathewpavkov:在我的Firefox版本中,消息不同:tel:“我们不知道这是什么意思(无效的URL)”callto:“我们不知道如何处理这个(未知协议)”。这就是为什么我写了callto :) - looper

2

我知道这是一个旧问题,但如果您需要解决方法,这可能会有所帮助:

var isFirefox = (navigator.userAgent.toLowerCase().indexOf('firefox') > -1);
var isMobile = (typeof window.orientation !== "undefined") ||
               (navigator.userAgent.indexOf('IEMobile') !== -1);

if(isFirefox && !isMobile) {
    $('a[href^="tel:"]').click(function() { return false; });
}

注意:

正如@Peter指出的那样,这段代码确实禁止了Firefox上的tel:链接。我添加了对移动设备的检测(在此处找到)以限制副作用,但它仍然会禁用第三方应用程序,在桌面上处理它。


4
这是一个非常糟糕的建议,因为它会禁用所有的电话链接,即使用户已经安装了可以处理这些链接的应用程序!在桌面电脑上,你可以使用第三方应用程序(如Skype)来处理tel链接。此外,这段代码将在Firefox手机版上禁用tel链接... - Peter
你说得对,这不是一个好的做法,只是一个权宜之计。我已经为移动版Firefox修复了这个问题(请参见我的编辑答案),但它确实会在桌面上禁用第三方应用程序。 - Tip-Sy

1
电话链接在Firefox中确实可用,如果没有安装电话应用程序,它会告诉您为什么无法拨打该号码。这不是错误消息,正如评论所指出的,“解决方案”并不合适。我在我的响应式网站中使用此提示来帮助PC用户。
<a class="tel" href="tel:8001234567" 
    title="Clicking this link only works on a mobile phone">
  (800) 123-4567
</a>

虽然不是完全准确的说法,但它能向大多数没有安装电话应用程序的PC用户解释,他们不应该将电话号码作为可点击链接使用,而没有鼠标的移动用户则永远看不到工具提示。拥有电话应用程序的桌面用户可能习惯于点击电话链接,并且也理解该工具提示是针对没有电话应用程序的桌面用户的。我没有卸载我的邮件以测试是否在带有href="mailto:..."的锚标记上显示相同的消息。该消息比较通用,可以处理任何未安装的协议,因此对某些用户来说听起来有点神秘。

0

希望我的注释没有过时。

当前版本的火狐浏览器在 Windows 10 上对 href="tel:" 的处理相当良好(它会要求我定义所需的电话呼叫应用程序)。

但是:

似乎火狐浏览器仍然存在问题,无法在点击电话链接后处理 AJAX 调用。

HTML:

<a href="tel:01234567" onclick="log_action(123,'phonecall')">anynumber</a>

Javascript(实验性):

function log_action(aid,action2){
$.getJSON('myscript_ajax.php', 
  {action: "log_action",
  actionid: aid,
  action2: action2
  })
  .done(function(data)
  {   
    console.log(data);
  })                
  .error(function(jqXHR, textStatus, errorThrown) {
    console.log("error " + textStatus);
    console.log("incoming Text " + jqXHR.responseText);
  });
}

虽然Chrome按预期记录了来自php脚本的响应,但Firefox显示错误通知时text-status和响应文本为空。

也许如果安装了电话,AJAX请求可以正常工作,但我没有电话,并且开发服务器应用程序,我无法知道客户端是否有电话。


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