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?


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.


1
Ini tidak berhasil. Toh tidak untuk aplikasi web di iOS 4.3.1.
mhenry1384


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.


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).


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;

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">

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 .


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>

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.


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>


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.


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).


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.


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

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



1

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


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

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.


1

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


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.


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.


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

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

1
Anda mungkin ingin menyebutkan bahwa ini adalah solusi.
Daan

-16

Solusi lain adalah menggunakan gambar nomor IP


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.