Jak oznaczyć numery telefonów?

Chcę oznaczyć numer telefonu jako łącze do wywołania w dokumencie HTML. Przeczytałem podejście mikroformatów i Wiem, że schemat tel: byłby standardem, ale nie jest dosłownie nigdzie zaimplementowany.

Skype definiuje, o ile wiem, skype: i callto:, ten ostatni zyskał pewną popularność. Zakładam, że inne firmy mają albo inne plany, albo wskakują do pociągu callto:.

Jaka byłaby najlepsza praktyka oznaczania numeru telefonu, aby jak najwięcej osób z oprogramowaniem VoIP może po prostu kliknąć link, aby uzyskać połączenie?

Dodatkowe pytanie: czy ktoś wie o komplikacjach z numerami alarmowymi, takimi jak 911 w USA lub 110 W Niemczech?

Zdrówko,

Update: Microsoft NetMeeting przyjmuje programy callto: pod WinXP. to pytanie sugeruje, że Microsoft Office Communicator będzie obsługiwał tel: schematy, ale nie callto:. Świetnie, Redmond!

Update 2: Two and a pół roku później. Wydaje się, że sprowadza się to do tego, co chcesz zrobić z numerem. W kontekście mobilnym, {[1] } jest drogą do zrobienia. Kierowanie na komputery stacjonarne to zależy od Ciebie, jeśli uważasz, że Twoi użytkownicy to więcej osób Skype (callto:) lub bardziej prawdopodobne, że masz coś takiego jak Google Voice (tel:) zainstalowany. Moja osobista opinia jest taka, że w razie wątpliwości użyj tel: (zgodnie z odpowiedzią @ Sidnicious).

Update 3: Użytkownik @ rybo111 zauważył, że Skype w Chrome tymczasem wskoczył na pasmo tel:. I nie można tego zweryfikować, ponieważ żadna maszyna z obydwoma pod ręką, ale jeśli to prawda, oznacza to, że w końcu mamy zwycięzcę: {]}

                                        tel:
Author: Community, 2009-07-22

14 answers

Schemat tel: był używany w późnych latach 90. i udokumentowany na początku 2000 roku za pomocą RFC 2806 (który został przestarzały przez bardziej dokładny RFC 3966 w 2004 roku) i jest nadal ulepszany. Obsługa tel: na iPhonie nie była arbitralną decyzją.

callto:, chociaż jest obsługiwany przez Skype, nie jest standardem i należy go unikać, chyba że jest ukierunkowany na użytkowników Skype.

Ja? Ja bym po prostu zaczął dodawać poprawnie uformowane tel: Uri na Twoje strony (bez wąchania agenta użytkownika) i czekać na telefony reszty świata, aby nadrobić zaległości :) .

Przykład :

<a href="tel:+18475555555">1-847-555-5555</a>
 452
Author: s4y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-02 07:57:34

Moje wyniki testu:

Callto:

  • przeglądarka Nokia: nic się nie dzieje
  • Google Chrome: prosi o uruchomienie skype ' a, aby zadzwonić na numer
  • Firefox: prosi o wybranie programu do wywołania numeru
  • IE: prosi o uruchomienie skype ' a, aby zadzwonić pod numer

Tel:

  • przeglądarka Nokia: działa
  • Google Chrome: nic się nie dzieje
  • Firefox: "Firefox nie wie, jak otworzyć ten adres url" [8]}
  • IE: nie można znaleźć adresu url
 69
Author: Murat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-03 12:27:25

Najlepiej zacząć od tel:, który działa na wszystkich telefonach

Następnie umieść ten kod, który będzie działał tylko wtedy, gdy na pulpicie, i tylko wtedy, gdy link jest kliknięty.

Używam http://detectmobilebrowsers.com/ aby wykryć przeglądarki mobilne, możesz użyć dowolnej metody

if (!jQuery.browser.mobile) {
    jQuery('body').on('click', 'a[href^="tel:"]', function() {
            jQuery(this).attr('href', 
                jQuery(this).attr('href').replace(/^tel:/, 'callto:'));
    });
}
Więc w zasadzie zajmujesz się wszystkimi bazami.

Tel: działa na wszystkich telefonach, aby otworzyć dialer z numerem

Callto: działa na komputerze, aby połączyć się ze skype od firefox, chrome

 43
Author: mordy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-21 17:32:08

Jak można się spodziewać, wsparcie WebKit tel: obejmuje również przeglądarkę mobilną z Androidem-FYI

 20
Author: rymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-28 20:10:02

zachowuję tę odpowiedź dla celów "historycznych", ale już jej nie polecam. Zobacz odpowiedź @ Sidnicious powyżej i mój Update 2.

Ponieważ wygląda to na remis między callto i Tel facetów, chcę wrzucić możliwe rozwiązanie w nadziei, że Twoje komentarze wprowadzą mnie z powrotem na drodze światła; -)

Używając callto:, ponieważ większość klientów desktopowych poradzi sobie z tym:

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

Następnie, jeśli klientem jest iPhone, zastąp linki:

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:"));
      }
    }
  }
};

Wszelkie zastrzeżenia wobec To rozwiązanie? Czy powinienem zacząć od tel:?

 10
Author: Boldewyn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-17 08:18:01

Mobile Safari (iPhone & iPod Touch) użyj schematu tel:.

Jak wybrać numer telefonu ze strony internetowej na iPhonie?

 8
Author: Jan Aagaard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-22 09:20:21

RFC3966 definiuje standardowy URI IETF dla numerów telefonów, czyli URI ' tel:'. To standard. Nie ma podobnego standardu określającego " callto:", jest to szczególna konwencja dla Skype ' a na platformach, gdzie is umożliwia rejestrację obsługi URI, aby ją obsługiwać.

 3
Author: Leroy Jenkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 20:18:34

To mi pomogło:

1.link zgodny ze standardami:

        <a href="tel:1500100900">

2.zastąp go, gdy przeglądarka mobilna nie zostanie wykryta, dla skype:

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

Wybranie linku do zastąpienia przez klasę wydaje się bardziej efektywne. Oczywiście działa tylko na anchorach z klasą .phone.

Umieściłem go w funkcji if( !isMobile() ) { ... więc uruchamia się tylko wtedy, gdy wykryje przeglądarkę. Ale ten jest prawdopodobnie przestarzały...

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 )
    );
}
 3
Author: devein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 14:38:31

Użyłem tel: do mojego projektu.

Działa w Chrome, Firefox, IE9 i 8, Chrome mobile i przeglądarce mobilnej na moim smartfonie Sony Ericsson.

Ale callto: nie działa w przeglądarkach mobilnych.

 2
Author: fuma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-01 14:01:58

Chociaż Apple zaleca tel: w swoich dokumentach dla mobilnego Safari, obecnie (iOS 4.3) akceptuje callto: tak samo. Dlatego polecam używanie callto: na ogólnej stronie internetowej, ponieważ działa zarówno ze Skype ' em, jak i iPhonem i spodziewam się, że będzie działać również na telefonach z Androidem.

Aktualizacja (Czerwiec 2013)

To wciąż kwestia decyzji, co chcesz, aby Twoja strona internetowa oferowała. Na moich stronach internetowych podaję zarówno tel:, jak i callto: linki (ten ostatni oznaczony jako dla Skype), ponieważ przeglądarki desktopowe na Macu nie rób nic z linkami tel:, podczas gdy mobilny Android nie robi nic z linkami callto:. Nawet Google Chrome z wtyczką Google Talk nie odpowiada na linki tel:. Mimo to wolę oferować oba linki na pulpicie na wypadek, gdyby ktoś zadał sobie trud uzyskania tel: linków do pracy na swoim komputerze.

Jeśli projekt strony nakazywał, że podaję tylko jeden link, użyłbym linku tel:, który starałbym się zmienić na callto: w przeglądarkach desktopowych.

 2
Author: Old Pro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-09 19:14:43

Użyłbym tel: (zgodnie z zaleceniami). Ale aby mieć lepszy fallback / nie wyświetlać stron błędów użyłbym czegoś takiego (używając 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:");
    }
});

Zakłada się, że przeglądarki mobilne, które mają stempel mobilny w ciągu userAgent-string, mają wsparcie dla protokołu tel:. Dla reszty zamieniamy łącze na protokół callto:, aby mieć zapasowy dostęp do Skype ' a, jeśli jest dostępny.

Aby wyłączyć strony błędów dla nieobsługiwanych protokołów, link jest kierowany do nowego ukrytego iframe.

Niestety nie wydaje się możliwe sprawdzenie, czy adres URL został załadowany pomyślnie w ramce iframe. Wydaje się, że nie są wywoływane żadne zdarzenia błędów.

 2
Author: jonas_jonas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-20 16:53:16

Ponieważ {[0] } jest domyślnie obsługiwane przez skype( skonfigurowany w ustawieniach Skype), a inni również go obsługują, polecam użycie callto: zamiast skype:.

 1
Author: awe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-22 09:29:53

Używając jQuery, Zastąp wszystkie numery telefonów na stronie odpowiednimi schematami callto: lub 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;
        }
    });
});

Podziękowania dla @ jonas_jonas za pomysł. Wymaga doskonałej funkcji findAndReplaceDOMText .

 0
Author: bishop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:16

Używam zwykłych znaczników <a href="tel:+123456">12 34 56</a> i sprawiam, że te linki nie są klikalne dla użytkowników desktopów przez pointer-events: none;

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

Dla przeglądarek, które nie obsługują zdarzeń wskaźnikowych (IE

if(!Modernizr.touch) {
    $(document).on('click', '[href^="tel:"]', function(e) {
        e.preventDefault();
        return false;
    });
}
 -1
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-01 08:14:18