Bagaimana cara menonaktifkan penautan nomor telepon di Mobile Safari?

363

Safari di iPhone secara otomatis membuat tautan untuk rangkaian angka yang muncul ke nomor telepon. Saya menulis halaman web yang berisi alamat IP, dan Safari mengubahnya menjadi tautan nomor telepon. Apakah mungkin untuk menonaktifkan perilaku ini untuk seluruh halaman atau elemen pada halaman?

benzado
sumber

Jawaban:

714

Tampaknya ini adalah hal yang benar untuk dilakukan, menurut Referensi HTML Safari :

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

Jika Anda menonaktifkan ini tetapi masih menginginkan tautan telepon, Anda masih dapat menggunakan skema URI "tel".

Ini adalah halaman yang relevan di Perpustakaan Pengembang Apple.

Lewis
sumber
1
Ini tidak berhasil. Toh tidak untuk aplikasi web di iOS 4.3.1.
mhenry1384
5
4.2.1 pada iPhone berfungsi; developer.apple.com/library/ios/#featuredarticles/…
Mark Brackett
2
Hanya ingin mencatat ini juga berfungsi untuk versi terbaru, seperti 5.1.1 yang saya aktifkan sekarang.
Dave Stein
4
Bisakah ini diterapkan berdasarkan kasus per kasus? Misalnya, 1 angka string pada halaman saya tidak ingin ditafsirkan sebagai nomor telepon, tetapi menjaga perilaku untuk 6 orang lain pada halaman yang saya ingin ditafsirkan secara otomatis sebagai nomor telepon?
jpostdesign
3
Ini berfungsi dengan baik di bawah iOS 12 pada 2019! 👍🏻
Matt Komarnicki
38

Untuk menonaktifkan tampilan penguraian ponsel untuk elemen tertentu, CSS ini sepertinya melakukan trik:

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

Aturan pertama menonaktifkan klik, yang kedua menangani styling.

Florian Grell
sumber
5
Solusi hebat di mana Anda ingin membatasi penataan / pemformatan di lokasi yang sangat spesifik.
mikevoerman
36

Saya menggunakan joiner lebar nol &zwj;

Masukkan saja di suatu tempat di nomor telepon dan itu berfungsi untuk saya. Diuji di BrowserStack (dan Litmus untuk email).

stickyuser
sumber
1
Ini bekerja untuk saya. Saya hanya menambahkannya sebelum nomor pertama.
vinboxx
1
Solusi terbaik!
El cero
Saya membuat tanda tangan email HTML dan ini adalah satu-satunya solusi yang membantu mencegah surat iOS 10 dari mendeteksi nomor (non-telepon) sebagai nomor telepon.
Nick
1
Solusi rapi. Bekerja dengan baik pada iPhone 6S (+) / iOS 9.
Ain Tohvri
1
Ini adalah satu-satunya solusi yang bisa diterapkan jika Anda meminta Mobile Safari untuk memuat file XML yang menggunakan arahan <? Xml-stylesheet> untuk menghasilkan halaman HTML. Mobile Safari mengonversi nomor panjang apa pun di XML asli menjadi tautan "tel:", meskipun sumbernya bukan HTML (!).
Mark Reinhold
33

Saya mengalami masalah yang sama. Saya menemukan properti di UIWebView yang memungkinkan Anda mematikan detektor data.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
catshow
sumber
Akhirnya, solusi yang berhasil untuk saya. Tentu saja ini hanya akan bekerja dengan orang yang menulis aplikasi tujuan-c mereka sendiri menggunakan UIWebView, dan tidak menggunakan aplikasi Safari. Terima kasih!!
iandotkelly
29

Tambahkan ini, saya pikir itulah yang Anda cari:

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

Solusi untuk Webview!

Untuk aplikasi PhoneGap-iPhone / PhoneGap-iOS, Anda dapat menonaktifkan deteksi nomor telepon dengan menambahkan yang berikut ke delegasi aplikasi proyek Anda:

// ...

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

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

sumber: Nonaktifkan Deteksi Telepon di PhoneGap-iOS .

Trigonometri
sumber
Masuk untuk mengimplementasikan kode awoodland sebelum saya membaca komentar badger110. Jadi itulah saya, di AppDelegate.m ketika saya sadar bahwa saya pernah melihat ini di suatu tempat. Saya mulai mencari-cari, menemukan kotak centang di file xib dan saya pikir saya baru saja menemukan sesuatu yang ajaib. Saya kembali untuk memposting penemuan hebat ini dan menemukan komentar badger110 ada di sana selama ini. TL DR: Baca dulu komentarnya, ya knuckle head.
Tina D.
8

Untuk menonaktifkan deteksi nomor telepon pada bagian halaman, bungkus teks yang terpengaruh dalam tag jangkar dengan href = "#". Jika Anda melakukan ini, Safari seluler dan UIWebView harus dibiarkan begitu saja.

<a href="#"> 1234567 </a>
yodaisgreen
sumber
1
Inilah yang akhirnya saya lakukan karena metatag tidak berfungsi. Namun, mungkin lebih baik dilakukan <a href="javascript:;">untuk mencegah efek samping dari perubahan URL.
JustJohn
Ini berfungsi untuk saya dalam email HTML. Saya hanya ingin menonaktifkan satu nomor telepon, tidak semua. Saya baru saja menambahkan style = "text-decoration: none;" ke tag dengan warna yang cocok dengan sisa teks, dan Anda bisa mengubah gaya kursor juga.
Simon Darby
6

Pikir saya sudah menemukan solusinya: letakkan angka di dalam <label>elemen. Belum mencoba tag lain, tetapi <div>membiarkannya aktif di layar beranda, bahkan dengan telephone=noatributnya.

Tampaknya jelas dari komentar sebelumnya bahwa tag meta berfungsi, tetapi karena beberapa alasan telah rusak di bawah versi iOS yang lebih baru, setidaknya dalam beberapa kondisi. Saya menjalankan 4.0.1.

BobFromBris
sumber
Hai Bob. Jika Anda ingin memasukkan contoh kode HTML, Anda harus membungkus kode dalam backticks <like this>,. (Stack Overflow menggunakan bahasa pemformatan yang disebut Markdown.) Saya akan mengedit jawaban Anda.
Paul D. Waite
Itu pada akhirnya tidak berhasil - ketika saya memuat ulang Aplikasi, tautan hiliting kembali. Saya terpaksa menambahkan #karakter ke bagian depan nomor telepon: menurut dokumen Apple "Referensi Skema URL Apple": "Secara khusus, jika URL berisi karakter * atau #, aplikasi Telepon tidak berusaha untuk memanggil nomor yang sesuai. nomor telepon."
BobFromBris
Anda harus menghapus jawaban Anda, karena itu tidak berhasil. Seperti yang Anda sendiri akui dalam komentar di atas.
mhenry1384
@ Bob Tip bersih yang bagus. Kami memiliki masalah dengan HTML di email. Membungkus label bekerja dengan baik +1, terima kasih
geedubb
6

Anda juga dapat menggunakan <a>label dengan javascript: void(0)sebagai hrefnilai.

Contoh sebagai berikut:
<a href="javascript: void(0)">+44 456 77 89 87</a>

diazwatson
sumber
Ini membantu saya saat diperlukan untuk tetap menggunakan gaya dan tindakan iOS default tetapi mengabaikan elemen tertentu.
Greater King
4

Saya memiliki masalah yang sama, tetapi pada aplikasi web iPad.

Sayangnya, keduanya ...

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

atau ...

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

... bekerja.

Tapi, inilah tiga hacks jelek:

  • mengganti angka "0" dengan huruf "O"
  • mengganti angka "1" dengan huruf "l"
  • masukkan rentang yang tidak berarti: misalnya, 555.5<span>5</span>5.5555

Bergantung pada font yang Anda gunakan, dua yang pertama hampir tidak terlihat. Yang terakhir ini jelas melibatkan kode berlebihan, tetapi tidak terlihat oleh pengguna.

Peretasan Kludgy pasti, dan mungkin tidak dapat dilakukan jika Anda menghasilkan kode secara dinamis dari data, atau jika Anda tidak dapat mencemari data Anda dengan cara ini.

Tapi, cukup dalam keadaan darurat.

Mattstuehler
sumber
2
“Bergantung pada font yang Anda gunakan, dua yang pertama hampir tidak terlihat” Kecuali jika pengguna telah mengatur iOS untuk membacakan konten kepada mereka . Maka itu akan sangat terlihat.
Paul D. Waite
1
Untuk aksesibilitas (seperti pembaca teks yang disebutkan di atas), atau jika pengguna menyalin / menempelkannya ke dalam aplikasi telepon, ini hanya akan merusak beberapa hal. Juga, secara umum jika laba-laba dari Yelp atau Google atau sejenisnya mengindeks bisnis, dan menarik nomor telepon yang salah, itu tidak baik.
Jonah
4

Saya memiliki ABN (Nomor Bisnis Australia) yang ditekankan oleh iPad Safari menjadi tautan nomor telepon. Tidak ada saran yang membantu. Solusi saya adalah menempatkan tag img di antara angka-angka.

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

Kelas hanya ada untuk mendokumentasikan untuk apa tag img dibuat.

Bekerja pada iPad 1 (4.3.1) dan iPad 2 (4.3.3).

mhenry1384
sumber
3
Sayangnya, di Internet Explorer saya mendapatkan ikon gambar yang rusak. Menambahkan width="0" height="0"bantuan, tetapi masih ada satu piksel yang ditampilkan.
Geert
1
Anda tidak memerlukan gambar, cukup masukkan HTML apa pun di dalam nomor: <p> Bukan ponsel: 112 <span> 34 </span> 56 </p>
Radek Pech
@Geert, atur line-heightdan font-sizeke nol.
HelpNeeder
4

Pengalaman saya sama dengan yang lainnya. Tag meta ...

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

... berfungsi saat situs web berjalan di Mobile Safari (mis., dengan chrome) tetapi berhenti bekerja saat dijalankan sebagai aplikasi web (mis. disimpan ke layar beranda dan berjalan tanpa chrome).

Solusi saya yang kurang ideal adalah memasukkan nilai ke dalam kolom input ...

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

Ini kurang dari ideal karena, meskipun perbatasan tidak diatur, iOS membuat bilah abu-abu multi-piksel di atas bidang. Tapi, lebih baik daripada melihat nomornya sebagai tautan.

Alan M.
sumber
3

Saya telah menguji ini sendiri dan menemukan bahwa itu bekerja walaupun tentu bukan solusi yang elegan. Memasukkan rentang kosong di nomor telepon akan mencegah pendeteksi data mengubahnya menjadi tautan.

(604) 555<span></span> -4321
Jay
sumber
1
Ini juga merupakan perbaikan yang akhirnya saya gunakan dan bekerja dengan sangat baik dan cukup sederhana.
Holger
2
Ini bukan jawaban yang baik, karena Anda menghasilkan HTML buruk yang disengaja.
stephanfriedrich
2

<meta name = "format-detection" content = "telephone=no"> tidak berfungsi untuk email: jika HTML yang Anda persiapkan adalah untuk email, metatag akan diabaikan.

Jika yang Anda targetkan adalah email, berikut ini adalah solusi jelek tapi berhasil untuk Anda:

Contoh beberapa HTML yang ingin Anda hindari ditautkan atau diformat secara otomatis:

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

Dan CSS yang akan membuat keajaiban terjadi:

@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";}
}

Kekurangannya: Anda mungkin memerlukan kueri media untuk masing-masing dari kombo ipad / iphone portrait / landscape

cabrera
sumber
1

Anda dapat mencoba menyandikannya sebagai entitas HTML:

&#48; = 0
&#57; = 9
Diodeus - James MacFarlane
sumber
1

Masalah yang sama di aplikasi Sencha Touch diselesaikan dengan meta tag ( <meta name="format-detection" content="telephone=no">) di index.html aplikasi.

orang lain
sumber
1

Trik yang saya gunakan yang berfungsi pada lebih dari sekadar Mobile Safari adalah dengan menggunakan kode pelarian HTML dan sedikit mark-up di nomor telepon. Ini membuatnya lebih sulit bagi browser untuk "mengidentifikasi" nomor telepon, yaitu

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

Saya juga memiliki masalah ini: Safari dan browser seluler lainnya mengubah ID PPN menjadi nomor telepon. Jadi saya ingin metode bersih untuk menghindarinya pada satu elemen, bukan seluruh halaman (atau situs).
Saya membagikan solusi yang mungkin saya temukan, ini adalah suboptimal tetapi masih cukup layak: Saya taruh, di dalam angka saya tidak ingin menjadi tel:tautan, &#8288;entitas HTML yang merupakan karakter tak terlihat Word-Joiner . Saya mencoba untuk tetap lebih semantik (well, setidaknya semacam) dengan meletakkan char ini di beberapa tempat yang berarti, misalnya untuk ID PPN saya memilih untuk meletakkannya di antara kelompok digit yang berbeda sesuai dengan formatnya sehingga untuk PPN Italia I menulis: 0613605&#8288;048&#8288;8yang merender dalam 0613605⁠048⁠8 dan tidak diubah dalam nomor telepon.

kaosmos
sumber
1

Pilihan lain adalah mengganti tanda hubung dalam nomor telepon Anda dengan karakter (U + 2011 'Unicode Non-Breaking Hyphen')

Daniel
sumber
1

Saya benar-benar bingung dengan ini untuk sementara waktu tetapi akhirnya menemukan jawabannya. Kami membuat pembaruan ke situs kami dan memiliki beberapa angka yang dikonversi menjadi tautan dan sebagian tidak. Ternyata angka-angka itu tidak akan dikonversi ke tautan jika berada dalam <fieldset>. Jelas bukan solusi yang tepat untuk sebagian besar keadaan, tetapi dalam beberapa hal itu akan menjadi solusi yang tepat.

Oliver P.
sumber
0

Jawaban ini melampaui segalanya pada 6-13-2012:

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

Ubah warna menjadi apa pun yang cocok dengan teks Anda, dekorasi teks menghilangkan garis bawah, peristiwa penunjuk menghentikannya agar tidak dilihat seperti tautan di peramban (penunjuk tidak berubah menjadi tangan)

Ini sempurna untuk email HTML di iOS dan browser.

Vincent Tobiaz
sumber
1
Menurut saya ini menetapkan warna secara eksplisit. Dengan kata lain, warnanya akan abu-abu, apa pun yang terjadi.
benzado
“Peristiwa penunjuk menghentikannya agar tidak dilihat seperti tautan di peramban” - di peramban yang mendukung pointer-events, tentu saja. Namun, jika pengguna melihat email HTML Anda di IE 10, tidak ada gunanya .
Paul D. Waite
Pertanyaannya adalah tentang menekan deteksi nomor telepon, bukan alamat surat.
jww
0

Mengapa Anda ingin menghapus tautan, membuatnya sangat ramah pengguna untuk memilih.

Jika Anda hanya ingin menghapus pengeditan otomatis, tetapi pertahankan tautannya bekerja cukup tambahkan ini ke CSS Anda ...

a[href^=tel] {
 color: inherit;
 text-decoration:inherit;
}
Marc
sumber
5
baik, saya tidak bisa mengatakan tentang poster asli, tetapi dalam kasus saya Safari menebak ponsel yang sebenarnya bukan nomor telepon, itu adalah data keuangan
Irae Carvalho
1
Pertanyaannya adalah tentang deteksi tautan pada nomor telepon, bukan mengeditnya.
jww
Dalam beberapa kasus, Anda mungkin memiliki nomor telepon di situs web tempat Anda perlu melakukan beberapa operasi selain membuat panggilan-telepon seperti menarik opsi untuk mengeditnya, atau kemampuan untuk mengklik dan menariknya ke tempat lain.
Nosajimiki
dia tidak ingin alamat IP dihubungkan sebagai nomor telepon
jahller
0

Pisahkan nomor tersebut ke dalam blok teks yang terpisah

301 <div style="display:inline-block">441</div> 3909
Kareem
sumber
1
Anda mungkin ingin menyebutkan bahwa ini adalah solusi.
Daan
-16

Solusi lain adalah menggunakan gambar nomor IP

Chris Copland
sumber
4
Saya pikir, ini bukan ide dewa. Harap hapus Jawaban Anda. Karena, Anda tidak dapat menyalin / menempelkan Teks Gambar, ini tidak mudah diservis (jika Anda mengubah konten atau gaya font) dan juga tidak bebas hambatan.
stephanfriedrich
solusinya bisa lebih buruk daripada problema, seperti yang dikatakan oleh @stephanfriedrich ini tidak akan berguna atau dapat digunakan
kaosmos
Tidak berguna sama sekali.
Luca Antonelli