我想在HTML文档中标记一个电话号码为可调用链接。我读过微格式方法,我知道tel:方案是标准的,但实际上没有实现。

据我所知,Skype定义了Skype:和callto:,后者已经获得了一些流行。我想,其他公司要么有其他的计划,要么就搭上了“呼叫列车”。

什么是标记电话号码的最佳实践,以便尽可能多的人使用VoIP软件只需点击链接就可以接听电话?

额外的问题:有人知道紧急号码的并发症吗,比如美国的911或德国的110 ?

更新:Microsoft NetMeeting在WinXP下接受callto:方案。这个问题表明,Microsoft Office Communicator将处理tel:方案,但不处理callto: ones。好,雷蒙德!

更新2:现在已经过去两年半了。这似乎可以归结为你想用这个数字做什么。在移动环境中,tel:是可行的。如果你认为你的用户更多是Skype用户(callto:),或者更可能安装谷歌Voice (tel:)之类的东西,这取决于你。我个人的观点是,有疑问时使用tel:(与@Sidnicious的回答一致)。

更新3:用户@rybo111指出,Chrome中的Skype同时也加入了tel:潮流。我无法证实这一点,因为没有一台机器同时拥有这两种设备,但如果这是真的,这意味着我们终于有了一个赢家:tel:


当前回答

我的测试结果:

呼叫:

诺基亚浏览器:什么都没有发生 谷歌Chrome浏览器:要求运行skype呼叫该号码 Firefox:要求选择一个程序来调用该号码 IE:要求运行skype呼叫该号码

tel:

诺基亚浏览器:正常工作 谷歌Chrome:什么都没有发生 Firefox:“Firefox不知道如何打开此url” IE:无法找到url

其他回答

我的测试结果:

呼叫:

诺基亚浏览器:什么都没有发生 谷歌Chrome浏览器:要求运行skype呼叫该号码 Firefox:要求选择一个程序来调用该号码 IE:要求运行skype呼叫该号码

tel:

诺基亚浏览器:正常工作 谷歌Chrome:什么都没有发生 Firefox:“Firefox不知道如何打开此url” IE:无法找到url

正如人们所期望的那样,WebKit对tel:的支持也扩展到了Android移动浏览器——仅供参考

虽然苹果在移动Safari的文档中推荐tel:,但目前(iOS 4.3)它也接受callto:。所以我建议在一般的网站上使用callto:,因为它可以在Skype和iPhone上运行,我希望它也可以在Android手机上运行。

更新(2013年6月)

This is still a matter of deciding what you want your web page to offer. On my websites I provide both tel: and callto: links (the latter labeled as being for Skype) since Desktop browsers on Mac don't do anything with tel: links while mobile Android doesn't do anything with callto: links. Even Google Chrome with the Google Talk plugin does not respond to tel: links. Still, I prefer offering both links on the desktop in case someone has gone to the trouble of getting tel: links to work on their computer.

如果网站设计要求我只提供一个链接,我会使用tel:链接,并尝试在桌面浏览器上将其更改为callto:。

我保留这个答案是为了“历史”目的,但不再推荐它了。请看上面@Sidnicious的回答和我的更新2。

因为这看起来像是电话和电话之间的平局,我想抛出一个可能的解决方案,希望你的评论能让我回到光明的道路上;-)

使用callto:,因为大多数桌面客户端都会处理它:

<a href="callto:0123456789">call me</a>

然后,如果客户端是iPhone,替换链接:

window.onload = function () {
  if (navigator.userAgent.match (/iPhone/i)) {
    var a = document.getElementsByTagName ("a");
    for (var i = 0; i < a.length; i++) {
      if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
        a[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
      }
    }
  }
};

有人反对这个解决方案吗?我应该从tel:开始吗?

由于callto:是每默认支持的skype(设置在skype设置),其他人也支持它,我建议使用callto:而不是skype:。