Telefon numaraları nasıl işaretlenir?


471

Bir telefon numarasını bir HTML belgesinde çağrılabilir bağlantı olarak işaretlemek istiyorum. Mikro biçimler yaklaşımını okudum ve biliyorum ki, bu tel:program standart olacak, ancak kelimenin tam anlamıyla hiçbir yerde uygulanmadı.

Skype, bildiğim kadarıyla skype:ve callto:ikincisinin biraz popülerlik kazandığını tanımlar . Sanırım diğer şirketlerin ya başka programları var ya da callto:trene atlıyorlar.

Bir telefon numarasını işaretlemek için en iyi uygulama hangisidir, böylece VoIP yazılımı ile mümkün olduğunca çok kişi bir çağrı almak için bir bağlantıyı tıklayabilir?

Bonus soru: ABD'de 911 veya Almanya'da 110 gibi acil durum numaraları ile ilgili komplikasyonları bilen var mı?

Alkış,

Güncelleştirme: Microsoft NetMeeting callto:WinXP altında düzenler alıyor . Bu soru , Microsoft Office Communicator'ın tel:şemaları ele alacağını, ancak şemaları ele almayacağını göstermektedir callto:. Harika, Redmond!

Güncelleme 2: İki buçuk yıl sonra. Sayı ile ne yapmak istediğinize kaynıyor gibi görünüyor. Mobil bağlamda, tel:gitmenin yolu budur. Kullanıcılarınızın daha fazla Skype kullanıcısı olduğunu ( callto:) veya Google Voice ( tel:) gibi bir şeyin yüklü olduğunu düşünüyorsanız, masaüstlerini hedeflemek size kalmış . Kişisel fikrim şüphe tel:duyduğunuzda (@Sidnicious 'cevabına uygun olarak) kullanmaktır.

Güncelleme 3: User @ rybo111, Chrome'daki Skype'ın bu arada tel:bandwagon'a atladığını belirtti. Bunu doğrulayamıyorum, çünkü her ikisi de el altında olan bir makine yok, ancak eğer doğruysa, sonunda burada bir kazananımız var demektir:tel:


1
Ne yazık ki değil. Sağlayıcınızın (VoiP, cep telefonu comp veya her şey) yaptığı şeye kaynıyor gibi görünüyor. Bu 800 numara için de şarj olabilir.
Boldewyn

1
Chrome'da Google Voice kullanıyorum ve tel:URI'leri tanımıyor . Ben hala yapışıyorum callto:ve cep telefonu tarayıcıları zaten numarayı otomatik olarak algılaması teorisi üzerinde telefon numarası bir ekran.
Old Pro

5
Başlığa rağmen, bu soru, onları nasıl işaretleyeceğinizden ziyade gerçekten "telefon numaraları için hangi URL şemasını kullanmanız gerektiği" dir.
Raedwald

1
@Boldewyn Skype ile Chrome kullanırken istenir, tel:bu yüzden sonunda Skype kullanımı hakkındaki yorumunuzu kaldırmalısınız callto:?
rybo111

1
Soru güncellemelerinizi uygun cevaplar halinde düzenlemeyi deneyebilir misiniz? Bunun gibi bir karışıklık.
idmean

Yanıtlar:


495

tel:Şeması edildi 1990'ların sonunda kullanılan ve erken 2000 yılında belgelenmiş RFC 2806 (daha-kapsamlı tarafından obsoleted edildi RFC 3966 2004 yılında) ve geliştirilmeye devam etmektedir . İPhone'u desteklemek tel:keyfi bir karar değildi.

callto:Skype tarafından desteklenirken standart değildir ve özellikle Skype kullanıcılarını hedeflemedikçe bundan kaçınılmalıdır.

Ben mi? tel:Sayfalarınıza düzgün biçimlendirilmiş URI'ler eklemeye başladım (kullanıcı aracısını koklamadan) ve dünyanın geri kalan telefonlarının yetişmesini beklerim :).

Örnek :

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


Detaylı cevap için teşekkürler! Soruyu sorduğumdan beri, bu yaklaşımı da takip etmek istedim. Standardı kullanın ve şikayet eden kişilere kötü uygulamayı / aracı kullandıklarını söyleyin. Zorlaşmasına rağmen, bu müşteriyse, bence haklısınız. Yine de Skype kullanıcılarını dikkate almam gerekiyorsa, JavaScript çözümümle devam edeceğim.
Boldewyn

1
2014 ve Tel: artık Skype için çalışıyor. Ancak Skype Yankı / Ses Test Hizmeti'ni aramak istiyorsanız, bağlantı msdn.microsoft adresinden
OzBob

4
href="tel://1-555-555-5555"Formatı deneyen var mı? Tutsplus'tan çocuklar bunu tavsiye ediyor. t.tspsplus.com/tutorials/…
Adrien Be

2
Tel: etiketi ile yaşadığım deneyimde Skype, numarayı düzgün bir şekilde ayrıştırmak için + işaretli bir ülke kodunun (ör. İngiltere numaraları için "+44") olmasını gerektirir. Aksi takdirde Skype'ı açar ancak aramaya çalışmaz.
ShaunUK

3
Örnek şöyle olmamalı: <a href="tel:+18475555555">? İlk 1'den önceki + 'ya dikkat edin.)
Stéphane

73

Test sonuçlarım:

seslenmek:

  • Nokia Tarayıcı: hiçbir şey olmuyor
  • Google Chrome: numarayı aramak için skype çalıştırmanızı ister
  • Firefox: numarayı aramak için bir program seçmenizi ister
  • IE: numarayı aramak için skype çalıştırmanızı ister

tel:

  • Nokia Tarayıcı: çalışma
  • Google Chrome: hiçbir şey olmuyor
  • Firefox: "Firefox bu url'nin nasıl açılacağını bilmiyor"
  • IE: url bulunamadı

2
Buna eklemek için, davranış Android 4.2.2'deki (Nexus 4) Google Chrome için aynıdır. Skype'ın Android sürümünün arka planda çalışması, callto: bağlantılarının çalışmasını bile sağlamaz. Kısacası, dakika içinde mobil cihaz hedeflemek istiyorsanız callto: links'i gerçekten kullanamazsınız.
aendrew

Şimdi krom 35'te bu pop-up'ı
pec

Chrome ve firefox'ta (belki IE de), tel:önek için bir web hizmetini registerProtocolHandler ile kaydedebilirsiniz .
Ross Rogers

Chrome'da çalışan + ülke kodu telefon numarasını kullanmanız gerekir. tel: bağlantılar dont w / o + krom üzerinde skype çalışmak gibi görünüyor
Stas Svishov

OSX ve Chrome'da güncelleme: Facetime'ı başlatmanızı ister.
Jules

45

En iyi bahis, tel ile başlamaktır: tüm cep telefonlarında çalışır

Ardından, yalnızca masaüstündeyken ve yalnızca bir bağlantı tıklandığında çalışacak olan bu kodu girin.

Mobil tarayıcıları tespit etmek için http://detectmobilebrowsers.com/ kullanıyorum , tercih ettiğiniz yöntemi kullanabilirsiniz

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

Temel olarak tüm üslerinizi örtüyorsunuz.

tel: numara çeviriciyi açmak için tüm telefonlarda çalışır

callto: Firefox, Chrome'dan skype'a bağlanmak için bilgisayarınızda çalışır


Evet, bu - callto: Android'de hiç çalışmıyor (Murat'ın cevabı hakkındaki yorumuma bakın) ve tel: masaüstünde gerçekten çalışmıyor. Gerçekten talihsiz bir durum.
aendrew

1
Hmmm, ne yazık ki hızlı bir jsfiddle da bu işe izin vermiyor ... jsfiddle.net/tchalvakspam/gVZYt/3
Kzqai

Mac 10.8'de Seamonkey 2.20 üzerinde çalışmak, <body <?php body_class(); ?>>bir wordpress temasının header.php dosyasındaki kodun altına koyun .
om01

callto

Ne yazık ki bu JQuery 1.9'da amortismana tabi tutuldu jquery.com/upgrade-guide/1.9/#jquery-browser-removed
Casebash

21

Beklendiği gibi, WebKit'in desteği tel:Android mobil tarayıcıya da uzanıyor - FYI


15
Yorum olarak daha iyi, ama yine de bilmek iyi olurdu.
o0 '.

10

Bu yanıtı "tarihi" amaç için saklıyorum ama artık önermiyorum. Yukarıdaki @Sidnicious 'cevabına ve Güncelleme 2'ye bakın.

Callto ve tel çocuklar arasında bir beraberlik gibi göründüğü için, yorumlarınızın beni ışık yoluna geri getireceği umuduyla olası bir çözümü atmak istiyorum.

callto:Çoğu masaüstü istemcisi bunu ele alacağından şunu kullanarak :

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

Ardından, istemci bir iPhone ise, bağlantıları değiştirin:

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

Bu çözüme karşı itirazınız var mı? Tercihen başlamalı mıyım tel:?


İPhone aynı zamanda callto şemasını destekliyor olabilir, ancak Apple tel tercih ediyor, bu yüzden belgelerde belirtilen bu.
Jan Aagaard

5
Cevabımı gör. callto:tescilli bir URI şemasıdır, bu yüzden orada başlamazdım.
s4y

callto: mac'ta chrome için çalışmadı ve sürüm güncel.
Ujjwal

Bu beni şaşırtmıyor. Manzara, cevabın verildiği 2009 yılında temelde farklıydı. Ayrıca, callto:Skype gibi programa kaydolan üçüncü taraf bir programa ihtiyacınız vardır . Chrome'un kendisinin ne yapması gerektiği hakkında hiçbir fikri yok.
Boldewyn


3

RFC3966 , telefon numaraları için IETF standart URI'sini, yani 'tel:' URI'sini tanımlar. Standart budur. 'Callto:' ifadesini belirten benzer bir standart yoktur; bu, platformlarda Skype için URI işleyicisinin onu desteklemek üzere kaydedilmesine izin veren özel bir kuraldır.


Sidnicious bunu söyledi, evet.
Boldewyn

3

bu benim için çalıştı:

1. standartlara uygun bir bağlantı yapın:

        <a href="tel:1500100900">

2. mobil tarayıcı tespit edilmediğinde değiştirin, skype için:

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

Sınıf yoluyla değiştirilecek bağlantıyı seçmek daha verimli görünüyor. Tabii ki sadece .phonesınıfı olan çapalarda çalışır .

if( !isMobile() ) { ...Sadece masaüstü tarayıcısı algıladığında tetiklenir böylece fonksiyona koydum . Ama bu tamamen modası geçmiş ...

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

Mobil tarayıcıları tespit etmenin "uygun" yolu, büyük / küçük harfe duyarlı olmayan "mobile" dizesini kontrol etmektir.
Kevin Cox

2

Projem tel:için kullandım .

Sony Ericsson akıllı telefonumda Chrome, Firefox, IE9 & 8, Chrome mobil ve mobil Tarayıcı'da çalıştı.

Ancak callto:mobil Tarayıcılarda çalışmadı.


2

Kullanırdım tel:(tavsiye edildiği gibi). Ama daha iyi bir geri dönüş / hata sayfalarını görüntülemek için ben (jquery kullanarak) böyle bir şey kullanırsınız:

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

Varsayım, userAgent-stringinde mobil damgası olan mobil tarayıcıların tel:protokolü desteklediği varsayılır . Geri kalanı için, callto:mümkünse Skype'a bir geri dönüş yapmak için bağlantıyı protokolle değiştiriyoruz.

Desteklenmeyen protokol (ler) için hata sayfalarını bastırmak amacıyla, bağlantı yeni bir gizli iframe'e hedeflenir.

Maalesef URL'nin iframe'e başarıyla yüklendiğini kontrol etmek mümkün görünmüyor. Hiçbir hata olayının başlatılmadığı anlaşılıyor.


Gizli iframe'lerin güzel kullanımı!
Boldewyn

1

Yana callto:(Skype ayarlarında oluşturulur) skype tarafından desteklenen varsayılan başına ve diğerleri de bunu destekleyecek, ben kullanarak öneriyoruz callto:ziyade skype:.


3
İşte katılıyorum. Ama hep birlikte tel: vs callto: 'a kaynıyor gibi görünüyor ve bu kolay bir şey değil.
Boldewyn

1

Apple tel:, Mobile Safari için belgelerinde önermekle birlikte, şu anda (iOS 4.3) callto:aynı şeyi kabul etmektedir . Bu nedenle callto:, hem Skype hem de iPhone ile çalıştığı için genel bir web sitesinde kullanılmasını öneriyorum ve Android telefonlarda da çalışmasını bekliyorum.

Güncelleme (Haziran 2013)

Bu hala web sayfanızın ne sunmasını istediğinize karar verme meselesidir. Benim web sitelerinde ben hem sağlamak tel:ve callto:bağlantıları Mac Masaüstü tarayıcıları ile bir şey yapmayın çünkü (Skype için varlık olarak etiketlenmiş ikincisi) tel:, mobil Android ile hiçbir şey yapmaz iken linkleri callto:linkleri. Google Talk eklentisine sahip Google Chrome bile tel:bağlantılara yanıt vermez . Yine de, birisinin tel:bilgisayarında çalışmak için bağlantı alma sorununa girmesi durumunda her iki bağlantıyı da masaüstünde sunmayı tercih ederim .

Site tasarımı yalnızca bir tel:bağlantı sağladığımı belirttiyse callto:, masaüstü tarayıcılarda değiştirmeye çalışacağım bir bağlantı kullanırdım .


1
Android "Ice Cream Sandwich" en son açık kaynaklı yapı stok tarayıcı hala sadece destek gibi görünüyor tel:; bir callto:bağlantıya tıklanması "Web sayfası kullanılamıyor"
sonucunu veriyor

0

JQuery kullanarak, sayfadaki tüm ABD telefon numaralarını uygun callto:veya tel:düzenlerle değiştirin.

// 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;
        }
    });
});

Fikir için @jonas_jonas'a teşekkürler. Mükemmel findAndReplaceDOMText işlevini gerektirir .


1
Bu çözüm ideal değildir, çünkü kullanıcı aracısı dizesinin analizi kötü uygulama olarak kabul edilir. URI'yi destekleyen telancak kendisini mobil olarak bildirmeyen bir cihaz düşünün .
Arturo Torres Sánchez

-1

Normal <a href="tel:+123456">12 34 56</a>biçimlendirmeyi kullanıyorum ve bu bağlantıları üzerinden masaüstü kullanıcıları için tıklanamaz hale getiriyorumpointer-events: none;

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

işaretçi olaylarını desteklemeyen tarayıcılar için (IE <11), tıklama JavaScript ile önlenebilir (örnek Modernizr ve jQuery'ye dayanır):

if(!Modernizr.touch) {
    $(document).on('click', '[href^="tel:"]', function(e) {
        e.preventDefault();
        return false;
    });
}

1
Kullanılması Modernizr.touchhangi edilir Dokunmatik Olay destek anlaması desteğine için tel:güvenilmez. Kolay istisna durumları: iPad, Windows tabletler, vb.
zachleat

Windows masaüstünde çalışan Chrome bile kendisini bir dokunmatik cihaz olarak bildirir.
Arturo Torres Sánchez

Bazı masaüstü sınıfı makineler tel: url'leri destekler. Mac'e özgü bir örnek için, Mac'teki FaceTime standarttır ve kullanıcının iPhone'unu Handoff / Continuity ile kullanacak kadar tel: ile çalışır, bu nedenle işaretçi olayları kullanmak: masaüstlerini hedeflemek için hiçbiri artık akıllıca olmayabilir .
OxC0FFEE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.