Come disabilitare il collegamento dei numeri di telefono in Mobile Safari?


363

Safari su iPhone crea automaticamente collegamenti per stringhe di cifre che appaiono ai numeri di telefono. Sto scrivendo una pagina web contenente un indirizzo IP e Safari lo sta trasformando in un collegamento al numero di telefono. È possibile disabilitare questo comportamento per un'intera pagina o un elemento in una pagina?


Risposte:


714

Questa sembra essere la cosa giusta da fare, secondo il riferimento HTML di Safari :

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

Se lo disabiliti ma desideri comunque i collegamenti telefonici, puoi comunque utilizzare lo schema URI "tel".

Ecco la pagina pertinente nella libreria per gli sviluppatori di Apple.


1
Questo semplicemente non funziona. Non per le app Web su iOS 4.3.1.
mhenry1384,


2
Volevo solo notare che questo funziona anche per le versioni recenti, come 5.1.1, su cui sto lavorando ora.
Dave Stein,

4
Questo può essere applicato caso per caso? Ad esempio, 1 stringa numerica su una pagina che non voglio essere interpretata come un numero di telefono, ma mantenere il comportamento di altre 6 persone su una pagina che desidero essere interpretata automaticamente come un numero di telefono?
jpostdesign,

3
Funziona perfettamente con IOS 12 nel 2019! 👍🏻
Matt Komarnicki il

38

Per disabilitare l'aspetto dell'analisi del telefono per elementi specifici, questo CSS sembra fare il trucco:

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

La prima regola disattiva il clic, la seconda si occupa dello stile.


5
Ottima soluzione in cui si desidera limitare lo stile / la formattazione in una posizione molto specifica.
mikevoermans,

36

Uso un falegname a larghezza zero &zwj;

Mettilo da qualche parte nel numero di telefono e funziona per me. Testato in BrowserStack (e tornasole per le e-mail).


1
Questo funziona per me. L'ho appena aggiunto prima del primo numero.
Vinboxx,

1
La migliore soluzione!
El cero,

Ho creato una firma e-mail HTML e questa è stata l'unica soluzione che ha aiutato a impedire che la posta iOS 10 rilevasse erroneamente un numero (non telefonico) come numero di telefono.
Nick,

1
Soluzione pulita. Ha funzionato bene su iPhone 6S (+) / iOS 9.
Ain Tohvri,

1
Questa è l'unica soluzione praticabile se stai chiedendo a Mobile Safari di caricare un file XML che utilizza una direttiva <? Xml-stylesheet> per generare la pagina HTML. Mobile Safari converte qualsiasi numero lungo nell'XML originale in un collegamento "tel:", anche se l'origine non è HTML (!).
Mark Reinhold,

33

Avevo lo stesso problema. Ho trovato una proprietà su UIWebView che ti consente di disattivare i rilevatori di dati.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;

Finalmente una soluzione che ha funzionato per me. Ovviamente questo funzionerà solo con le persone che scrivono la propria applicazione obiett-c usando UIWebView e non usando l'app Safari. Grazie!!
iandotkelly,

29

Aggiungi questo, penso che sia quello che stai cercando:

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

10

Soluzione per Webview!

Per le applicazioni PhoneGap-iPhone / PhoneGap-iOS, è possibile disabilitare il rilevamento del numero di telefono aggiungendo quanto segue al delegato dell'applicazione del progetto:

// ...

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

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

fonte: disabilita il rilevamento del telefono in PhoneGap-iOS .


Sono andato a implementare il codice di awoodland prima di leggere il commento di badger110. Quindi eccomi qui, in AppDelegate.m quando mi viene in mente che l'ho visto da qualche parte. Comincio a guardarmi intorno, trovo la casella di controllo nel file xib e penso di aver appena scoperto qualcosa di magico. Torno a pubblicare questa gloriosa scoperta e trovo che il commento di badger110 fosse lì da sempre. TL DR: leggi prima i commenti, ya nocca.
Tina D.

8

Per disabilitare il rilevamento del numero di telefono su una parte di una pagina, avvolgere il testo interessato in un tag di ancoraggio con href = "#". In questo caso, Safari mobile e UIWebView dovrebbero lasciarlo in pace.

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

1
Questo è quello che ho finito per fare poiché il metatag non ha funzionato. Tuttavia, è probabilmente meglio farlo <a href="javascript:;">per evitare effetti collaterali da una modifica dell'URL.
JustJohn,

Questo funziona per me nell'e-mail HTML. Volevo solo disabilitare un numero di telefono, non tutti. Ho appena aggiunto lo stile = "text-decoration: none;" al tag con il colore in modo che corrisponda al resto del testo e puoi anche cambiare lo stile del cursore.
Simon Darby,

6

Penso di aver trovato una soluzione: inserisci il numero all'interno di un <label>elemento. Non ho provato nessun altro tag, ma l' <div>ho lasciato attivo sulla schermata principale, anche con iltelephone=no attributo.

Sembra ovvio da precedenti commenti che il meta tag ha funzionato, ma per qualche ragione si è rotto nelle versioni successive di iOS, almeno in alcune condizioni. Sto correndo 4.0.1.


Ciao Bob. Se si vuole mettere in esempi di codice HTML, è necessario inserire il codice in backticks, <like this>. (Stack Overflow utilizza un linguaggio di formattazione chiamato Markdown.) Modificherò di conseguenza la tua risposta.
Paul D. Waite,

Alla fine non ha funzionato: quando ho ricaricato l'app, il link hiliting era tornato. Ho fatto ricorso all'aggiunta di un #carattere nella parte anteriore del numero di telefono: secondo il documento Apple "Riferimento schema URL Apple": "In particolare, se un URL contiene i caratteri * o #, l'applicazione Telefono non tenta di comporre il numero corrispondente numero di telefono."
BobFromBris

È necessario rimuovere la risposta, poiché non funziona. Come tu stesso riconosci nel commento sopra.
mhenry1384,

@Bob Bel suggerimento pulito. Abbiamo riscontrato problemi con HTML in un'email. Avvolgere un'etichetta ha funzionato bene +1, grazie
geedubb

6

Puoi anche usare l' <a>etichetta javascript: void(0)come hrefvalore.

Esempio come segue:
<a href="javascript: void(0)">+44 456 77 89 87</a>


Ciò mi ha aiutato, quando necessario, a utilizzare ancora lo stile e le azioni iOS predefiniti, ma ignorare elementi specifici.
GreaterKing

4

Ho avuto lo stesso problema, ma su un'app Web per iPad.

Sfortunatamente, né ...

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

né ...

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

... lavorato.

Ma, ecco tre brutti hack:

  • sostituendo il numero "0" con la lettera "O"
  • sostituendo il numero "1" con la lettera "l"
  • inserire un intervallo senza significato: ad es. 555.5<span>5</span>5.5555

A seconda del carattere utilizzato, i primi due sono appena percettibili. Quest'ultimo comporta ovviamente codice superfluo, ma è invisibile per l'utente.

Kludgy è sicuro, e probabilmente non è praticabile se stai generando il tuo codice in modo dinamico dai dati, o se non puoi inquinare i tuoi dati in questo modo.

Ma, sufficiente in un pizzico.


2
"A seconda del carattere che usi, i primi due sono appena percettibili" A meno che l'utente non abbia impostato iOS per leggere il contenuto . Quindi sarebbe abbastanza evidente.
Paul D. Waite,

1
Per accessibilità (come il lettore di testo menzionato sopra) o se l'utente copia / incolla nell'app del telefono, ciò rompe le cose. Inoltre, in generale se un ragno di Yelp o Google o simili sta indicizzando un'azienda e ottiene un numero di telefono sbagliato, non va bene.
Giona,

4

Avevo un ABN (Australian Business Number) che iPad Safari ha insistito per trasformare in un collegamento di numero di telefono. Nessuno dei suggerimenti ha aiutato. La mia soluzione era quella di mettere i tag img tra i numeri.

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

La classe esiste solo per documentare a cosa servono i tag img.

Funziona su iPad 1 (4.3.1) e iPad 2 (4.3.3).


3
Sfortunatamente, in Internet Explorer ho quelle icone di immagini rotte. L'aggiunta width="0" height="0"aiuta, ma viene ancora visualizzato un singolo pixel.
Geert,

1
Non hai bisogno di immagini, inserisci qualsiasi HTML all'interno del numero: <p> Non un telefono: 112 <span> 34 </span> 56 </p>
Radek Pech,

@Geert, impostare line-heighte font-sizea zero.
HelpNeeder

4

La mia esperienza è la stessa di altri citati. Il meta tag ...

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

... funziona quando il sito Web è in esecuzione in Mobile Safari (ad es. con Chrome) ma smette di funzionare quando viene eseguito come webapp (ad es. viene salvato nella schermata principale e funziona senza Chrome).

La mia soluzione tutt'altro che ideale è quella di inserire i valori nei campi di input ...

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

È meno che ideale perché, nonostante il bordo sia impostato su nessuno, iOS visualizza una barra grigia multi-pixel sopra il campo. Ma è meglio che vedere il numero come un link.


3

L'ho provato io stesso e ho scoperto che funziona anche se non è certamente una soluzione elegante. L'inserimento di un intervallo vuoto nel numero di telefono impedirà ai rilevatori di dati di trasformarlo in un collegamento.

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

1
Questa è anche la correzione che ho finito per usare e funziona molto bene ed è abbastanza semplice.
Holger,

2
Questa non è una buona risposta, perché si genera HTML cattivo intenzionale.
Stephanfriedrich,

2

<meta name = "format-detection" content = "telephone=no"> non funziona per le e-mail: se l'HTML che stai preparando è per una e-mail, il metatag verrà ignorato.

Se ciò che stai prendendo di mira sono e-mail, ecco l'ennesima brutta soluzione per te:

Esempio di HTML che si desidera evitare di essere collegati o formattati automaticamente:

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

E i CSS che faranno accadere la magia:

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

Lo svantaggio: potresti aver bisogno di una query multimediale per ciascuna delle combinazioni ipad / iphone verticale / orizzontale



1

Stesso problema nell'app Sencha Touch risolto con meta tag ( <meta name="format-detection" content="telephone=no">) in index.html dell'app.


1

Un trucco che uso su più di Mobile Safari è usare codici di escape HTML e un piccolo mark-up nel numero di telefono. Ciò rende più difficile per il browser "identificare" un numero di telefono, ad es

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

1

Anch'io ho questo problema: Safari e altri browser mobili trasformano gli ID IVA in numeri di telefono. Quindi voglio un metodo pulito per evitarlo su un singolo elemento, non sull'intera pagina (o sito).
Sto condividendo una possibile soluzione che ho trovato, non è ottimale ma è ancora abbastanza praticabile: inserisco, all'interno del numero che non voglio diventare un tel:collegamento, il&#8288; entità HTML che è il carattere invisibile di Word-Joiner . Ho cercato di rimanere più semantico (beh, almeno una sorta di) inserendo questo carattere in qualche punto significativo, ad esempio per l'IVA che ho scelto di metterlo tra i diversi gruppi di cifre in base al suo formato, quindi per un'IVA italiana I ha scritto: 0613605&#8288;048&#8288;8che rende in 0613605⁠048⁠8 e non si trasforma in un numero di telefono.


1

Un'altra opzione è quella di sostituire i trattini nel tuo numero di telefono con il carattere (U + 2011 'Unicode Non-Breaking Hyphen')


1

Ne sono rimasto davvero confuso per un po 'ma alla fine l'ho capito. Abbiamo apportato aggiornamenti al nostro sito e alcuni numeri sono stati convertiti in un collegamento e altri no. Si scopre che i numeri non verranno convertiti in un collegamento se si trovano in un <campo>. Ovviamente non è la soluzione giusta per la maggior parte delle circostanze, ma in alcuni sarà quella giusta.


0

Questa risposta ha la meglio su 6-13-2012:

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

Cambia il colore in qualunque cosa corrisponda al tuo testo, la decorazione del testo rimuove la sottolineatura, gli eventi del puntatore ne impediscono la visualizzazione come un collegamento in un browser (il puntatore non si trasforma in una mano)

Questo è perfetto per le e-mail HTML su iOS e browser.


1
Mi sembra che questo imposti esplicitamente il colore. In altre parole, sarà grigio, qualunque cosa accada.
benzado,

"Gli eventi puntatore ne impediscono la visualizzazione come un collegamento in un browser" - in un browser che supporta pointer-events, certo. Se l'utente sta visualizzando le tue e-mail HTML in IE 10, tuttavia, non va bene .
Paul D. Waite,

La domanda riguarda la soppressione del rilevamento dei numeri di telefono, non degli indirizzi postali.
1414

0

Perché vorresti rimuovere il collegamento, rende molto facile avere l'eoption.

Se vuoi semplicemente rimuovere la modifica automatica, ma mantieni il collegamento funzionante, aggiungi questo nel tuo CSS ...

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

5
bene, non posso dire del poster originale, ma nel mio caso Safari sta indovinando telefoni che non sono in realtà numeri di telefono, sono dati finanziari
Irae Carvalho,

1
La domanda riguarda il rilevamento dei collegamenti sui numeri di telefono, non la loro modifica.
1414

In alcuni casi potresti avere un numero di telefono su un sito Web in cui devi eseguire qualche altra operazione oltre a fare una telefonata come tirare su un'opzione per modificarlo o la possibilità di fare clic e trascinarlo in un altro posto.
Nosajimiki,

non vuole avere indirizzi IP collegati come numeri di telefono
jahller

0

Suddividi il numero in blocchi di testo separati

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

1
Potresti voler menzionare che questa è una soluzione alternativa.
Daan,

-16

Un'altra soluzione sarebbe quella di utilizzare un'immagine del numero IP


4
Penso che questa non sia una tale idea divina. Elimina la tua risposta. Perché, non è possibile copiare / incollare un testo di immagini, non è facile da riparare (se si modifica il contenuto o lo stile del carattere) e non è privo di barriere.
Stephanfriedrich,

la soluzione potrebbe essere peggiore del problema, come affermato da @stephanfriedrich questo non sarà utile o utilizzabile
kaosmos

Per niente utile.
Luca Antonelli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.