Mobil Safari'de telefon numarası bağlantısını nasıl devre dışı bırakabilirim?


363

İPhone'daki Safari, telefon numaralarına görünen basamak dizileri için otomatik olarak bağlantılar oluşturur. IP adresi içeren bir web sayfası yazıyorum ve Safari bunu bir telefon numarası bağlantısına dönüştürüyor. Tüm sayfa veya sayfadaki bir öğe için bu davranışı devre dışı bırakmak mümkün müdür?


Yanıtlar:


714

Safari HTML Referansına göre bu yapılacak doğru şey gibi görünüyor :

<meta name="format-detection" content="telephone=no">

Bunu devre dışı bırakır ancak yine de telefon bağlantıları istiyorsanız, yine de "tel" URI şemasını kullanabilirsiniz.

İşte Apple Geliştirici Kitaplığı'ndaki ilgili sayfa .


1
Bu işe yaramıyor. Yine de iOS 4.3.1'deki web uygulamaları için değil.
mhenry1384


2
Sadece bunun şu anda bulunduğum 5.1.1 gibi son sürümler için de çalıştığını belirtmek istedim.
Dave Stein

4
Bu duruma göre uygulanabilir mi? Örneğin, bir telefon numarası olarak yorumlanmasını istemediğim bir sayfada 1 sayı dizesi, ancak otomatik olarak telefon numarası olarak yorumlanmasını istediğim bir sayfadaki diğer 6 kişinin davranışını koruyor musunuz?
jpostdesign

3
2019'da IOS 12 altında mükemmel çalışıyor! Kom🏻
Matt

38

Belirli öğelerin telefon ayrıştırma görünümünü devre dışı bırakmak için, bu CSS hile yapıyor gibi görünüyor:

.element { pointer-events: none; }
.element > a { text-decoration:none; color:inherit; }

İlk kural tıklamayı devre dışı bırakır, ikincisi stil ile ilgilenir.


5
Çok spesifik bir konumda stil / biçimlendirmeyi kısıtlamak istediğiniz harika çözüm.
mikevoermans

36

Sıfır genişlikli bir birleştirici kullanıyorum &zwj;

Sadece telefon numarasına bir yere koy ve benim için çalışıyor. BrowserStack'ta (ve e-postalar için Litmus) test edildi.


1
Bu benim için çalışıyor. Sadece ilk sayıdan önce ekliyorum.
vinboxx

1
En iyi çözüm!
El cero

Bir HTML e-posta imzası oluşturdum ve bu, iOS 10 postalarının bir telefon numarası olarak hatalı bir şekilde (telefon dışı) bir numara algılamasını önlemeye yardımcı olan tek çözümdü.
Nick

1
Temiz çözüm. IPhone 6S (+) / iOS 9'da iyi çalıştı.
Ain Tohvri

1
Bu, Mobile Safari'den HTML sayfasını oluşturmak için <? Xml-stylesheet> yönergesi kullanan bir XML dosyası yüklemesini istiyorsanız tek uygulanabilir çözümdür. Mobile Safari, kaynak HTML (!) Olmasa bile orijinal XML'deki herhangi bir uzun sayıyı "tel:" bağlantısına dönüştürür.
Mark Reinhold

33

Aynı sorunu yaşıyordum. UIWebView üzerinde veri dedektörlerini kapatmanızı sağlayan bir özellik buldum.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;

Sonunda benim için çalışan bir çözüm. Tabii ki bu sadece Safari uygulamasını kullanarak UIWebView kullanarak kendi objektif-c uygulamasını yazan kişilerle çalışacaktır. Teşekkürler!!
iandotkelly

29

Bunu ekleyin, aradığınız şey olduğunu düşünüyorum:

<meta name = "format-detection" content = "telephone=no">

10

Webview için çözüm!

PhoneGap-iPhone / PhoneGap-iOS uygulamaları için, projenizin uygulama temsilcisine aşağıdakileri ekleyerek telefon numarası algılamayı devre dışı bırakabilirsiniz:

// ...

- (void)webViewDidStartLoad:(UIWebView *)theWebView 
{
    // disable telephone detection, basically <meta name="format-detection" content="telephone=no" />
    theWebView.dataDetectorTypes = UIDataDetectorTypeAll ^ UIDataDetectorTypePhoneNumber;

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

kaynak: PhoneGap-iOS'ta Telefon Algılamayı devre dışı bırakın .


Badger110 yorumunu okumadan önce awoodland'ın kodunu uygulamak için gitti. İşte buradayım, AppDelegate.m'de bunu bir yerde gördüğüm zaman. Etrafa bakmaya başladım, xib dosyasındaki onay kutusunu buluyorum ve sanırım büyülü bir şey keşfettim. Bu görkemli keşfi göndermek için geri geldim ve badger110'un yorumunun başından beri orada olduğunu gördüm. TL DR: Önce yorumları okuyun, parmak ekleminiz.
Tina D.

8

Sayfanın bir kısmında telefon numarası algılamayı devre dışı bırakmak için, etkilenen metni bir bağlantı etiketine href = "#" ile sarın. Bunu yaparsanız, mobil Safari ve UIWebView onu yalnız bırakmalıdır.

<a href="#"> 1234567 </a>

1
metaEtiket işe yaramadığı için bunu yaptım. Bununla birlikte, <a href="javascript:;">bir URL değişikliğinden kaynaklanan yan etkileri önlemek için muhtemelen daha iyi yapılır .
JustJohn

Bu benim için HTML e-postasında çalışıyor. Yalnızca bir telefon numarasını devre dışı bırakmak istedim, hepsini değil. Ben sadece stilini ekledim = "text-decoration: none;" metnin geri kalanıyla eşleşecek renkle etikete ekleyin ve imleç stilini de değiştirebilirsiniz.
Simon Darby

6

Bir çözüm bulduğumu düşünün: numarayı bir <label>öğenin içine koyun . Başka bir etiket denemedim, ancak özellikle <div>bile ana ekranda etkin bıraktı telephone=no.

Önceki yorumlardan, meta etiketin işe yaradığı açık gibi görünüyor, ancak bir nedenden dolayı iOS'un sonraki sürümlerinde, en azından bazı koşullarda kırıldı. 4.0.1 kullanıyorum.


Merhaba Bob. HTML kodu örnekleri koymak istiyorsanız, kodu ters tırnaklara sarmanız gerekir <like this>. (Stack Overflow, Markdown adında bir biçimlendirme dili kullanır.) Yanıtınızı buna göre düzenleyeceğim.
Paul D.Waite

Sonunda işe yaramadı - Ben App yeniden yüklediğimde, bağlantı hiliting geri döndü. #Telefon numarasının önüne bir karakter eklemeye başvurdum : Apple doc "Apple URL Şeması Başvurusu" na göre: "Bir URL * veya # karakterleri içeriyorsa, Telefon uygulaması ilgili numarayı çevirmeye çalışmaz. telefon numarası."
BobFromBris

İşe yaramadığı için cevabınızı kaldırmalısınız. Yukarıdaki yorumda kendiniz kabul ettiğiniz gibi.
mhenry1384

@Bob Güzel temiz ipucu. Bir e-postada HTML ile ilgili sorunlar yaşadık. Bir etikete sarmak güzel çalıştı +1, teşekkürler
geedubb

6

<a>Etiketi değer javascript: void(0)olarak da kullanabilirsiniz href.

Aşağıdaki gibi örnek:
<a href="javascript: void(0)">+44 456 77 89 87</a>


Bu, yine de varsayılan iOS stilini ve eylemlerini kullanmaya ihtiyaç duyduğumda, ancak belirli öğeleri göz ardı ettiğinde bana yardımcı oldu.
greaterKing

4

Aynı sorunu yaşadım, ancak bir iPad web uygulamasında.

Ne yazık ki, ikisi de ...

 <meta name = "format-detection" content = "telephone=no">

ne de ...

&#48; = 0
&#57; = 9

... işe yaradı.

Ancak, işte ç çirkin kesmek:

  • "0" sayısını "O" harfiyle değiştirme
  • "1" sayısını "l" harfiyle değiştirme
  • anlamsız bir aralık girin: ör. 555.5<span>5</span>5.5555

Kullandığınız yazı tipine bağlı olarak, ilk ikisi neredeyse hiç fark edilmez. İkincisi açıkçası gereksiz kod içerir, ancak kullanıcı tarafından görülemez.

Kludgy kesin olarak saldırıyor ve kodunuzu verilerden dinamik olarak oluşturuyorsanız veya verilerinizi bu şekilde kirletemiyorsanız muhtemelen geçerli olmayabilir.

Ancak, bir tutam yeterli.


2
“Kullandığınız yazı tipine bağlı olarak, ilk ikisi zar zor farkedilir” Kullanıcı iOS'u içeriği okumak için ayarlamadıysa . O zaman oldukça dikkat çekici olurdu.
Paul

1
Erişilebilirlik için (yukarıda belirtilen metin okuyucu gibi) veya kullanıcı telefon uygulamasına kopyalarsa / yapıştırırsa, bu sadece işleri bozar. Ayrıca, genel olarak Yelp veya Google veya benzeri bir örümcek bir işletmeyi endeksliyorsa ve yanlış telefon numarasını çekiyorsa, bu iyi değildir.
Jonah

4

İPad Safari'nin bir telefon numarası bağlantısına dönüşmekte ısrar ettiği bir ABN (Avustralya İşletme Numarası) vardı. Önerilerin hiçbiri yardımcı olmadı. Benim çözüm numaraları arasında img etiketleri koymak oldu.

ABN 98<img class="PreventSafariFromTurningIntoLink" /> 009<img /> 675<img /> 709

Sınıf yalnızca img etiketlerinin ne için olduğunu belgelemek için bulunur.

İPad 1 (4.3.1) ve iPad 2 (4.3.3) üzerinde çalışır.


3
Ne yazık ki, Internet Explorer'da bu kırık görüntü simgelerini alıyorum. Ekleme width="0" height="0"yardımcı olur, ancak yine de tek bir piksel görüntülenir.
Geert

1
Resimlere ihtiyacınız yok, sadece numaranın içine herhangi bir HTML koyun: <p> Telefon değil: 112 <span> 34 </span> 56 </p>
Radek Pech

@Gül, ayar line-heightve font-sizesıfıra.
HelpNeeder

4

Deneyimlerim, diğer bazılarıyla aynı. Meta etiket ...

<meta name = "format-detection" content = "telephone=no">

... web sitesi Mobil Safari'de çalışırken (yani, kromla) çalışır, ancak bir webapp olarak çalıştırıldığında durur (yani, ana ekrana kaydedilir ve krom olmadan çalışır).

İdeal olmayan çözümüm, değerleri giriş alanlarına eklemektir ...

<input type="text" readonly="readonly" style="border:none;" value="3105551212">

İdeal olandan daha azdır, çünkü sınır hiçbirine ayarlanmamış olmasına rağmen iOS, alanın üzerinde çok pikselli gri bir çubuk oluşturur. Ancak, sayıyı bir bağlantı olarak görmek daha iyidir.


3

Bunu kendim test ettim ve kesinlikle zarif bir çözüm olmasa da işe yaradığını buldum. Telefon numarasına boş bir aralık eklenmesi, veri dedektörlerinin bir bağlantıya dönüşmesini önleyecektir.

(604) 555<span></span> -4321

1
Bu da kullanarak sona erdi düzeltme ve çok iyi çalışıyor ve oldukça basit.
Holger

2
Kasıtlı kötü HTML oluşturduğunuz için bu iyi bir Yanıt değildir.
stephanfriedrich

2

<meta name = "format-detection" content = "telephone=no"> e-postalar için çalışmaz: hazırladığınız HTML bir e-posta içinse, meta etiket dikkate alınmaz.

Hedeflediğiniz e-postalarsa, işte size çirkin ama işe yarayan başka bir çözüm daha olacak:

Bağlantılı veya otomatik biçimlendirmekten kaçınmak istediğiniz bazı HTML örnekleri:

will cease operations <span class='ios-avoid-format'>on June 1,
2012</span><span></span>.

Ve sihri gerçekleştirecek CSS:

@media only screen and (device-width: 768px) and (orientation:portrait){
span.ios-date{display:none;}
span.ios-date + span:after{content:"on June 1, 2012";}
}

Dezavantajı: ipad / iphone portre / manzara kombinasyonlarının her biri için bir medya sorgusu gerekebilir



1

Sencha Touch uygulamasında aynı sorun, <meta name="format-detection" content="telephone=no">index.html uygulamasında meta tag ( ) ile çözüldü .


1

Mobil Safari'den daha fazlasında çalışan bir numara HTML kaçış kodları ve telefon numarasında küçük bir işaret kullanmak. Bu, tarayıcının bir telefon numarasını "tanımlamasını", yani

Phone: 1-8&#48;&#48;<span>-</span>62&#48;<span>-</span>38&#48;3

1

Ben de bu sorun var: Safari ve diğer mobil tarayıcılar KDV kimliklerini telefon numaralarına dönüştürür. Bu yüzden tüm sayfayı (veya siteyi) değil, tek bir öğe üzerinde önlemek için temiz bir yöntem istiyorum.
Bulduğum olası bir çözümü paylaşıyorum, yetersiz ama yine de oldukça geçerli: Bir tel:bağlantı olmak istemediğim sayının içine &#8288;, Word-Joiner görünmez karakteri olan HTML varlığını koydum . Ben bu char bazı anlam noktaya koyarak daha anlamsal kalmaya çalıştım (iyi, en azından bir tür), örneğin KDV ID için ben İtalyan KDV için biçimine göre farklı basamak grupları arasında koymayı seçti yazdı: 0613605&#8288;048&#8288;80613605-048⁠8 render ve bir telefon numarasına dönüştürülmez.


1

Başka bir seçenek de telefon numaranızdaki tireleri karakterle değiştirmektir (U + 2011 'Unicode Kesintisiz Kısa Çizgi')


1

Bir süre bununla kafam karıştı ama sonunda anladım. Sitemizde güncellemeler yaptık ve bir sayıya bağlantıya dönüştük, bazıları değildi. <fieldset> 'de numaraların bir bağlantıya dönüştürülmeyeceği ortaya çıkıyor. Açıkçası çoğu durum için doğru çözüm değil, ama bazılarında doğru çözüm olacak.


0

Bu cevap 6-13-2012 itibariyle her şeyi altüst eder:

<a href="#" style="color: #666666; 
                   text-decoration: none;
                   pointer-events: none;">
  Boca Raton, FL 33487
</a>

Metninizle eşleşen rengi değiştirin, metin süslemesi alt çizgiyi kaldırır, işaretçi olayları bir tarayıcıdaki bir bağlantı gibi görüntülenmesini durdurur (işaretçi bir ele dönüşmez)

Bu, ios ve tarayıcıdaki HTML e-postaları için mükemmeldir.


1
Bana öyle geliyor ki rengi açıkça ayarlıyor. Başka bir deyişle, ne olursa olsun gri olacaktır.
benzado

“İşaretçi olayları tarayıcıda bir bağlantı gibi görüntülenmesini engeller” - kesinlikle destekleyen bir tarayıcıda pointer-events. Kullanıcı HTML e-postalarınızı IE 10'da görüntülüyorsa, iyi değil .
Paul

Soru, posta adreslerinin değil telefon numaralarının algılanmasının bastırılmasıyla ilgilidir.
jww

0

Neden bağlantıyı kaldırmak istersiniz, bu çok kullanıcı dostu olmasını sağlar.

Otomatik düzenlemeyi kaldırmak istiyorsanız, ancak bağlantıyı çalışır halde tutmak için bunu sadece CSS'nize ekleyin ...

a[href^=tel] {
 color: inherit;
 text-decoration:inherit;
}

5
Peki, orijinal poster hakkında söyleyemem, ancak benim durumumda Safari aslında telefon numarası olmayan telefonları tahmin ediyor, finansal veriler
Irae Carvalho

1
Soru, telefon numaralarında bağlantıyı düzeltmekle değil bağlantı algılamayla ilgilidir.
jww

Bazı durumlarda, bir web sitesinde, düzenleme seçeneğini açmak veya başka bir yere tıklayıp sürüklemek gibi bir telefon görüşmesi yapmaktan başka bir işlem yapmanız gereken bir telefon numaranız olabilir.
Nosajimiki

telefon numaraları olarak bağlı ip adresleri istemiyor
jahller

0

Sayıyı ayrı metin bloklarına ayırın

301 <div style="display:inline-block">441</div> 3909

1
Bunun bir çözüm olduğunu belirtmek isteyebilirsiniz.
Daan

-16

Başka bir çözüm IP numarasının bir görüntüsünü kullanmak olacaktır


4
Bence bu böyle bir tanrı fikri değil. Lütfen Cevabınızı silin. Çünkü, bir Resimli Metni kopyalayamaz / yapıştıramazsınız, kolay servis edilemez (içeriği veya yazı tipi stilini değiştirirseniz) ve ayrıca engelsiz değildir.
stephanfriedrich

@stephanfriedrich tarafından söylendiği gibi çözüm sorunludan daha kötü olabilir - bu yararlı veya kullanılabilir olmayacaktır
kaosmos

Hiç faydalı değil.
Luca Antonelli
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.