Firefox中的可点击电话协议标签
Posted
技术标签:
【中文标题】Firefox中的可点击电话协议标签【英文标题】:Clickable tel protocol a tag in firefox 【发布时间】:2012-12-29 17:46:16 【问题描述】:我有一个非常标准的电话号码标签。它适用于所有除了 Firefox。我认为 tel 协议是标准的 - 是否有我不知道的解决方法?
<a class="tel" href="tel:8001234567">(800) 123-4567</a>
Firefox 错误信息:
地址不明白
Firefox 不知道如何打开这个地址,因为协议 (tel) 没有与任何程序相关联。
您可能需要安装其他软件才能打开此地址。
【问题讨论】:
我会看看这个问题和答案***.com/questions/1164004/… 已经做到了。答案很旧 - 从 (tel) 与 (callto) 相比,(tel) 没有得到广泛使用的支持。 Firefox 特有的问题让我感到困惑。似乎(电话)对我来说很标准。 我不会说这有什么令人困惑的地方。 Firefox 根本没有实现对tel
的支持。
您似乎没有仔细阅读它,这个问题最后一次更新是在 2012 年 4 月。为什么您希望 Firefox 能够理解 tel:
协议而不需要进一步的附加组件?
你看到莫迪的回答了吗?它会照顾你的情况,它不是那么老..
【参考方案1】:
Firefox 不知道每个协议的程序。在这种情况下,用户需要在设置中指定一个程序。除了用 Skype 引入的非官方 callto:
替换它之外,没有服务器端的解决方法。
【讨论】:
callto: 也给出与 tel 相同的错误:-不确定这是否特定于我的 firefox 版本(Ubuntu 12.10 上的 18.0)tel
和 callto
在 Firefox(或任何桌面浏览器)中根本不起作用。您必须安装第三方扩展程序/程序才能支持此功能。为什么桌面浏览器会自动支持这个?除非安装了处理电话号码/呼叫的软件,否则浏览器无法对其进行任何操作。移动浏览器是另一回事。此外,当我单击 tel
链接时,Chrome 不会执行任何操作(相对于 Firefox,它会显示您在问题中陈述的页面)。
@mathewpavkov:在我的 Firefox 版本中,消息不同:电话:“我们不知道这意味着什么(无效的 url)”调用:“我们不知道如何处理这个(未知协议)”。这就是我写 callto 的原因:)【参考方案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:
链接。我添加了一个针对移动设备的检测 (found here) 以限制副作用,但它仍然会禁用可以在桌面上处理它的第三方应用程序。
【讨论】:
这是一个非常糟糕的建议,因为它会禁用所有 tel: 链接,即使用户安装了可以处理这些链接的应用程序!在台式计算机上,您可以使用 tel: 与 Skype 等第三方应用程序的链接。此外,此代码将禁用 tel:手机 Firefox 上的链接... 你是对的,这不是一个好习惯,只是一种解决方法。我为手机上的 Firefox 修复了它(请参阅我编辑的答案),但它确实仍然禁用了桌面上的 3rd-party 应用程序。【参考方案3】:电话链接在 Firefox 中有效,如果没有安装电话应用程序,它会通知您为什么无法拨打该号码。这不是一条错误消息,正如 cmets 指出的那样,“解决方案”是不合适的。我在我的响应式网站中为 PC 用户使用此提示:
<a class="tel" href="tel:8001234567"
title="Clicking this link only works on a mobile phone">
(800) 123-4567
</a>
虽然不是确切的事实,但它会向大多数没有安装电话应用程序的电脑用户解释,他们不应该将电话号码用作可点击的链接,而没有鼠标的移动用户永远不会请参阅工具提示。拥有手机应用的桌面用户可能会习惯于点击手机链接,并且还知道工具提示是为没有手机应用的桌面用户设计的。
我没有卸载我的邮件来测试相同的消息是否显示在带有href="mailto:..."
的锚标记上。该消息一般用于处理任何未安装的协议,因此对某些用户来说听起来有点神秘。
【讨论】:
【参考方案4】:我希望我的脚注没有过时。
当前版本的 firefox 可以很好地处理 href="tel:(在 Windows 10 上,它要求我为电话定义所需的应用程序)。
但是:
在 tel-link 上的 onclick 事件之后,firefox 似乎仍然存在 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 会显示带有空文本状态和响应文本的错误通知。
如果安装了电话,也许 AJAX 请求可以正常工作,但我没有,并且开发服务器应用程序,我也不知道客户端是否有。
【讨论】:
以上是关于Firefox中的可点击电话协议标签的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Firefox 对“选择”标签上的“点击”事件的反应与 Webkit 和 IE 不同?