我想起来一个电话号码,为可调用的链路在HTML文档。我已经阅读 微格式的方法, 我知道, tel: 方案将标准,但是实际上无处实施。

Skype定义,因为我所知, skype:callto:, 后者具有积累了一些知名度。我假定,即其他公司有任何其他方案或跳的 callto: 火车。

什么是最佳做法标志了一个电话号码,以便使尽可能多的人尽可能与VoIP软件可以只是点击链接到一个电话?

奖金的问题:任何人都不会知道的关于复杂紧急号码,如911在我们或110在德国?

干杯,

更新: 微软网络会议需要 callto: 计划在WinXP. 这个问题 表明,微软办公室的通信器将处理 tel: 计划的但不是 callto: 人。好,雷蒙德!

更新2: 两年半以后,现在。这似乎可以归结到你想要做什么用的数量。在移动方面, tel: 是的路要走。针对桌面这是你的,如果你认为你的用户更Skype人(callto:)或更可能会有类似谷歌的声音(tel:)安装。我个人的意见是,有疑问的时候使用 tel: (在线与@Sidnicious'的答复).

更新3: User@rybo111指出,Skype在铬同时跳的 tel: 浪潮。我不能验证这一点,因为没有机器都在,但如果这是真的,这意味着我们有最后一个赢家:

                                        tel:
有帮助吗?

解决方案

tel: 方案 用在1990年代末 和记录,2000年初有 RFC2806 (这是个废弃的更透彻 RFC3966 2004年)和 继续得到改进.支持 tel: 在iPhone上不是一个任意的决定。

callto:, ,同时支持通过Skype 不是一个标准的 应该避免,除非专门针对Skype用户。

我?我只是开始,包括适当形成的 tel: Uri在你的网页(无嗅的用户代理),并等待其余部分的世界的手机来追赶:).

:

<a href="tel:+18475555555">1-847-555-5555</a>

其他提示

我的测试结果:

拨电至:

  • 诺基亚浏览器:什么都没发生
  • 谷歌浏览器:要求运行 Skype 拨打该号码
  • 火狐浏览器:要求选择一个程序来拨打该号码
  • IE:要求运行 Skype 拨打该号码

电话:

  • 诺基亚浏览器:在职的
  • 谷歌浏览器:什么都没发生
  • 火狐浏览器:“Firefox 不知道如何打开此网址”
  • IE:找不到网址

在最好的办法是与电话开始:其中上的所有移动台的工作原理

然后把这个代码,这将仅在桌面上时运行,并且被点击的链接,只有当

我使用 http://detectmobilebrowsers.com/ 来检测移动浏览器,你可以用你喜欢的任何方法

if (!jQuery.browser.mobile) {
    jQuery('body').on('click', 'a[href^="tel:"]', function() {
            jQuery(this).attr('href', 
                jQuery(this).attr('href').replace(/^tel:/, 'callto:'));
    });
}

所以基本上你覆盖所有客户群。

电话:在所有手机上的作品编号为打开拨号程序

致电第一:在您的计算机上的作品从Firefox连接到Skype的铬

正如人们所期望,WebKit的支持tel:的延伸到Android移动浏览器,以及 - FYI

我把这个答案的“历史性”的宗旨,但不建议这样做了。见@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:开始?

移动Safari(iPhone和iPod Touch的)使用tel:方案。

如何从网页上拨打电话号码iPhone?

RFC3966 定义的IETF标准的URI的电话号码,那是 '电话:' URI 。这是标准。有没有类似标准,指定“致电第一:”,这是为Skype上平台特定约定其中允许登记URI处理程序来支持它

这工作对我来说:

词根记忆一个符合标准的链接:

        <a href="tel:1500100900">

2.replace它在未检测移动浏览器,为Skype:

$("a.phone")
    .each(function()
{ 
  this.href = this.href.replace(/^tel/, 
     "callto");
});

选择链接经由类取代似乎更有效。 当然它仅适用于锚定件与.phone类。

我已经把它在功能上if( !isMobile() ) { ...所以它触发,只有当检测到桌面浏览器。但是,这是一个过时的problably ...

function isMobile() {
    return (
        ( navigator.userAgent.indexOf( "iPhone" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPod" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPad" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "Android" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "webOS" ) > -1 )
    );
}

我用tel:为我的项目。

它的工作在浏览器,Firefox,IE9&8,铬移动和在我的索尼爱立信智能手机上的移动浏览器。

但是callto:并未在移动浏览器中工作。

我会用tel:(作为推荐)。但有一个更好的回退/不显示错误页面,我会使用这样的事情(使用jQuery):

// enhance tel-links
$("a[href^='tel:']").each(function() {
    var target = "call-" + this.href.replace(/[^a-z0-9]*/gi, "");
    var link = this;

    // load in iframe to supress potential errors when protocol is not available
    $("body").append("<iframe name=\"" + target + "\" style=\"display: none\"></iframe>");
    link.target = target;

    // replace tel with callto on desktop browsers for skype fallback
    if (!navigator.userAgent.match(/(mobile)/gi)) {
        link.href = link.href.replace(/^tel:/, "callto:");
    }
});

的假设是,具有在的userAgent串的移动邮票移动浏览器具有用于tel:协议的支持。对于其余部分,我们替换为callto:协议链接到有一个后备Skype的(如果有)。

要抑制差错页的不支持的协议(一个或多个),该链路被定位到新的隐藏的iframe。

不幸的是,似乎没有可能来检查,如果该URL已在iframe加载成功。它似乎没有错误事件被触发。

由于callto:是每个由Skype支持的默认设置(在Skype的设置来设置),和其他人也支持的话,我会建议使用callto:而非skype:

虽然苹果建议tel:在其文档为移动Safari,目前(的iOS 4.3)它接受callto:一样。因此,我建议使用一个通用的网站callto:,因为它可工作在Skype和iPhone,我希望它会在Android手机上运行了。

更新(2013年6月)

这仍然是你希望你的网页,提供什么决定的问题。在我的网站,我同时提供tel:callto:链接(后者标记为Skype的),因为在Mac桌面浏览器不跟tel:任何链接而移动的Android并没有对callto:链接什么。即使谷歌Chrome浏览器与谷歌Talk插件不响应tel:链接。不过,我更喜欢提供桌面,以防有人已经去了越来越tel:链接到他们的电脑上工作的麻烦,在两个链路上。

如果网站的设计决定,我只提供一个链接,我会使用一个tel:链接,我会尝试改变callto:在桌面浏览器。

使用jQuery

,用适当的callto:tel:方案替换页面上的所有美国的电话号码。

// create a hidden iframe to receive failed schemes
$('body').append('<iframe name="blackhole" style="display:none"></iframe>');

// decide which scheme to use
var scheme = (navigator.userAgent.match(/mobile/gi) ? 'tel:' : 'callto:');

// replace all on the page
$('article').each(function (i, article) {
    findAndReplaceDOMText(article, {
        find:/\b(\d\d\d-\d\d\d-\d\d\d\d)\b/g,
        replace:function (portion) {
            var a = document.createElement('a');
            a.className = 'telephone';
            a.href = scheme + portion.text.replace(/\D/g, '');
            a.textContent = portion.text;
            a.target = 'blackhole';
            return a;
        }
    });
});

由于@jonas_jonas为理念。需要优良 findAndReplaceDOMText功能

我使用正常<a href="tel:+123456">12 34 56</a>标记和经由pointer-events: none;使桌面用户这些链接不可点击

a[href^="tel:"] {
    text-decoration: none;
}
.no-touch a[href^="tel:"] {
    pointer-events: none;
    cursor: text;
}

有关的浏览器不支持的指针事件(IE <11)时,点击可以用JavaScript(例如依赖于Modernizr的和jQuery)可以防止:

if(!Modernizr.touch) {
    $(document).on('click', '[href^="tel:"]', function(e) {
        e.preventDefault();
        return false;
    });
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top