我的电话号码链接用的是很标准的a标签,除了火狐浏览器以外,其他浏览器都能正常使用。我以为“tel”协议是标准的,难道还有什么我不知道的解决办法吗?
<a class="tel" href="tel:8001234567">(800) 123-4567</a>
火狐错误信息:
地址无法理解
Firefox 不知道如何打开这个地址,因为协议(tel)没有与任何程序关联。
您可能需要安装其他软件来打开此地址。
Firefox并不为每种协议配备一个程序。在这种情况下,用户需要在设置中指定一个程序。除了用Skype引入的非官方callto:
替换之外,服务器端没有任何绕过此问题的方法。
我知道这是一个旧问题,但如果您需要解决方法,这可能会有所帮助:
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:
链接。我添加了对移动设备的检测(在此处找到)以限制副作用,但它仍然会禁用第三方应用程序,在桌面上处理它。
<a class="tel" href="tel:8001234567"
title="Clicking this link only works on a mobile phone">
(800) 123-4567
</a>
希望我的注释没有过时。
当前版本的火狐浏览器在 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请求可以正常工作,但我没有电话,并且开发服务器应用程序,我无法知道客户端是否有电话。
tel:
协议呢? - robertc