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:
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.
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>
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
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
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
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:
?
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?
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ć.
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 )
);
}
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.
Ale callto:
nie działa w przeglądarkach mobilnych.
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.
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.
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:
.
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 .
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;
});
}
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