我有一个非常标准的电话号码标签。它适用于除Firefox 之外的所有应用程序。我认为电话协议是标准的 - 有没有我不知道的解决方法?
<a class="tel" href="tel:8001234567">(800) 123-4567</a>
火狐错误信息:
地址不明白
Firefox 不知道如何打开这个地址,因为协议 (tel) 没有与任何程序相关联。
您可能需要安装其他软件才能打开此地址。
Firefox 并不知道每个协议都有一个程序。在这种情况下,用户需要在设置中指定一个程序。对此没有服务器端的解决方法,除了用callto:
Skype 引入的非官方方法替换它。
我知道这是一个老问题,但如果您需要解决方法,这可能会有所帮助:
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 指出的那样,这段代码肯定会禁用tel:
Firefox 上的链接。我添加了对移动设备的检测(在此处找到)以限制副作用,但它仍然禁用可以在桌面上处理它的第三方应用程序。
电话链接在 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:..."
. 该消息对于处理任何未安装的协议有点通用,因此对某些用户来说听起来有点神秘。
我希望我的脚注不会过时。
当前版本的 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-script 的响应,但 firefox 会显示带有空文本状态和响应文本的错误通知。
如果安装了电话,也许 AJAX 请求可以正常工作,但我没有,并且开发服务器应用程序,我也不知道客户端是否有。