¿Cómo deshabilitar la vinculación de números de teléfono en Mobile Safari?


Safari en iPhone crea automáticamente enlaces para cadenas de dígitos que aparecen en los números de teléfono. Estoy escribiendo una página web que contiene una dirección IP, y Safari está convirtiendo eso en un enlace de número de teléfono. ¿Es posible desactivar este comportamiento para toda una página o un elemento de una página?

Author: benzado, 2008-10-22

24 answers

Esto parece ser lo correcto, de acuerdo con la Referencia HTML de Safari :

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

Si deshabilita esto pero aún desea enlaces telefónicos, aún puede usar el esquema URI "tel".

Aquí está la página relevante en la Biblioteca de Desarrolladores de Apple.

 635
Author: lewinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-06 00:17:48

Yo estaba teniendo el mismo problema. Encontré una propiedad en el UIWebView que te permite apagar los detectores de datos.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
 33
Author: catshow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-14 20:08:31

Para desactivar la apariencia de análisis del teléfono para elementos específicos, este CSS parece hacer el truco:

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

La primera regla desactiva el clic, la segunda se encarga del estilo.

 33
Author: Florian Grell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-12 10:29:25

Agrega esto, creo que es lo que estás buscando:

<meta name = "format-detection" content = "telephone=no">
 28
Author: Chuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-22 15:18:03

Utilizo una ensambladora de ancho cero &zwj;

Simplemente pon eso en algún lugar del número de teléfono y funciona para mí. Probado en BrowserStack (y Tornasol para correos electrónicos).

 21
Author: stickyuser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-20 03:15:16

Solución para Webview!

Para las aplicaciones PhoneGap-iPhone / PhoneGap-iOS, puede desactivar la detección de números de teléfono agregando lo siguiente al delegado de aplicación de su proyecto:

// ...

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

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

Fuente: Desactivar la detección telefónica en PhoneGap-iOS.

 11
Author: TRiG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-05 18:02:40

Creo que he encontrado una solución: poner el número dentro de un elemento <label>. No he probado ninguna otra etiqueta, pero <div> la dejó activa en la pantalla de inicio, incluso con el atributo telephone=no.

Parece obvio de los comentarios anteriores que la etiqueta meta funcionó, pero por alguna razón se ha roto bajo las versiones posteriores de iOS, al menos bajo algunas condiciones. Estoy ejecutando 4.0.1.

 7
Author: BobFromBris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-10 20:16:14

Para deshabilitar la detección de números de teléfono en parte de una página, envuelva el texto afectado en una etiqueta de anclaje con href="#". Si haces esto, mobile Safari y UIWebView deberían dejarlo en paz.

<a href="#"> 1234567 </a>
 7
Author: yodaisgreen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-13 23:47:02

Tuve el mismo problema, pero en una aplicación web para iPad.

Desafortunadamente, ninguno...

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

Nor...

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

... trabajar.

Pero, aquí hay tres trucos feos:

  • sustitución del número "0" por la letra "O"
  • sustitución del número "1" por la letra "l"
  • inserte un intervalo sin sentido: por ejemplo, 555.5<span>5</span>5.5555

Dependiendo de la fuente que utilice, las dos primeras son apenas perceptibles. Este último obviamente implica código superfluo, pero es invisible para el usuario.

Kludgy hackea con seguridad, y probablemente no sea viable si está generando su código dinámicamente a partir de datos, o si no puede contaminar sus datos de esta manera.

Pero, suficiente en un apuro.

 5
Author: mattstuehler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-26 22:17:14

Tenía un ABN (Número de Negocio australiano) que iPad Safari insistió en convertir en un número de teléfono enlace. Ninguna de las sugerencias ayudó. Mi solución fue poner etiquetas img entre los números.

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

La clase existe solo para documentar para qué sirven las etiquetas img.

Funciona en iPad 1 (4.3.1) y iPad 2 (4.3.3).

 5
Author: mhenry1384,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-18 15:54:48

Mi experiencia es la misma que la de algunos otros. Metaetiqueta...

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

...funciona cuando el sitio web se está ejecutando en Safari móvil (es decir, con chrome), pero deja de funcionar cuando se ejecuta como una aplicación web (es decir, se guarda en la pantalla de inicio y se ejecuta sin chrome).

Mi solución menos que ideal es insertar los valores en los campos de entrada...

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

Es menos que ideal porque, a pesar de que el borde se establece en ninguno, iOS renderiza una barra gris de varios píxeles sobre el campo. Pero, es mejor que ver el número como un enlace.

 5
Author: Alan M.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-05 08:14:56

También puede usar la etiqueta <a> con javascript: void(0) como valor href.

Ejemplo como sigue:
<a href="javascript: void(0)">+44 456 77 89 87</a>

 5
Author: diazwatson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-25 15:04:16

He probado esto yo mismo y he encontrado que funciona aunque ciertamente no es una solución elegante. Insertar un espacio vacío en el número de teléfono evitará que los detectores de datos lo conviertan en un enlace.

(604) 555<span></span> -4321
 3
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-14 07:56:46

<meta name = "format-detection" content = "telephone=no"> no funciona para correos electrónicos: si el HTML que está preparando es para un correo electrónico, la metatag será ignorada.

Si lo que estás apuntando son correos electrónicos, aquí hay otra solución fea pero que funciona para ti:

Ejemplo de algún HTML que desea evitar que se vincule o formatee automáticamente:

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

Y el CSS que hará que la magia suceda:

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

El inconveniente: es posible que necesite una consulta de medios para cada uno de los combos de retrato/paisaje ipad/iphone

 3
Author: cabrera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-30 17:56:28

Puedes intentar codificarlos como entidades HTML:

&#48; = 0
&#57; = 9
 2
Author: Diodeus - James MacFarlane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-22 15:14:28

El mismo problema en la aplicación Sencha Touch resuelto con la etiqueta meta (<meta name="format-detection" content="telephone=no">) en el índice.html de la aplicación.

 2
Author: someone else,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-25 19:37:21

Esta respuesta triunfa sobre todo a partir del 6-13-2012:

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

Cambie el color a lo que coincida con su texto, la decoración del texto elimina el subrayado, los eventos de puntero evitan que se vea como un enlace en un navegador (el puntero no cambia a una mano)

Esto es perfecto para correos electrónicos HTML en ios y el navegador.

 2
Author: Vincent Tobiaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-13 19:20:23

Un truco que uso que funciona en algo más que Safari móvil es usar códigos de escape HTML y un poco de marcado en el número de teléfono. Esto hace que sea más difícil para el navegador "identificar" un número de teléfono, es decir,

Phone: 1-8&#48;&#48;<span>-</span>62&#48;<span>-</span>38&#48;3
 2
Author: Phil LaNasa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-29 15:27:40

¿Por qué querría eliminar el enlace, hace que sea muy fácil de usar tener la opción.

Si simplemente desea eliminar la edición automática, pero mantener el enlace funcionando, simplemente agregue esto a su CSS...

a[href^=tel] {
 color: inherit;
 text-decoration:inherit;
}
 2
Author: Marc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-24 09:45:38

Yo también tengo este problema: Safari y otros navegadores móviles transforman los ID de IVA en números de teléfono. Así que quiero un método limpio para evitarlo en un solo elemento, no en toda la página (o sitio).
Estoy compartiendo una posible solución que encontré, es subóptima pero aún así es bastante viable: pongo, dentro del número no quiero convertirme en un enlace tel:, la entidad HTML &#8288; que es el carácter invisible Word-Joiner. Traté de permanecer más semántica (bueno, al menos una especie de) poniendo este carácter en algún punto de significado, por ejemplo, para el VAT ID elegí ponerlo entre los diferentes grupos de dígitos de acuerdo con su formato así que para un IVA italiano escribí: 0613605&#8288;048&#8288;8 que renderiza en 06136050488 y no se transforma en un número de teléfono.

 1
Author: kaosmos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:56

Otra opción es reemplazar los guiones en su número de teléfono por el carácter (U+2011 'Unicode Non-Breaking Hyphen')

 1
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-29 01:14:01

Estuve muy confundido por esto por un tiempo, pero finalmente lo descubrí. Hicimos actualizaciones a nuestro sitio y algunos números se convirtieron en un enlace y otros no. Resulta que los números no se convertirán en un enlace si están en un

. Obviamente no es la solución correcta para la mayoría de las circunstancias, pero en algunas será la correcta.
 1
Author: Oliver P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-09 09:42:47

Divida el número en bloques separados de texto

301 <div style="display:inline-block">441</div> 3909
 0
Author: Kareem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 22:20:43

Otra solución sería utilizar una imagen del número IP

 -9
Author: Chris Copland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-13 09:05:33