Как отключить привязку номера телефона в Mobile Safari? - PullRequest
338 голосов
/ 22 октября 2008

Safari на iPhone автоматически создает ссылки на строки цифр, которые появляются на телефонных номерах. Я пишу веб-страницу, содержащую IP-адрес, и Safari превращает его в ссылку на номер телефона. Можно ли отключить это поведение для всей страницы или элемента на странице?

Ответы [ 24 ]

674 голосов
/ 22 октября 2008

Это, кажется, правильная вещь, согласно Safari HTML Reference :

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

Если вы отключите это, но по-прежнему будете хотеть телефонную связь, вы все равно можете использовать схему "tel" URI.

Вот соответствующая страница в библиотеке разработчика Apple.

36 голосов
/ 12 марта 2013

Чтобы отключить внешний вид разбора телефона для определенных элементов, этот CSS, кажется, делает свое дело:

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

Первое правило отключает щелчок, второе - стилизацию.

32 голосов
/ 06 апреля 2011

У меня была такая же проблема. Я нашел свойство в UIWebView, которое позволяет отключать детекторы данных.

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;
27 голосов
/ 20 апреля 2016

Я использую столяр нулевой ширины &zwj;

Просто укажите это где-нибудь в номере телефона, и у меня это сработает. Протестировано в BrowserStack (и Лакмус для электронной почты).

27 голосов
/ 22 октября 2008

Добавьте это, я думаю, это то, что вы ищете:

<meta name = "format-detection" content = "telephone=no">
10 голосов
/ 15 октября 2011

Решение для Webview!

Для приложений PhoneGap-iPhone / PhoneGap-iOS вы можете отключить обнаружение номера телефона, добавив следующее к делегату приложения вашего проекта:

// ...

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

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

источник: Отключить обнаружение телефона в PhoneGap-iOS .

7 голосов
/ 14 июня 2011

Чтобы отключить определение номера телефона на части страницы, оберните затронутый текст в тег привязки с помощью href = "#". Если вы сделаете это, мобильный Safari и UIWebView должны оставить его в покое.

<a href="#"> 1234567 </a>
6 голосов
/ 09 августа 2010

Думаю, я нашел решение: поместите число внутри элемента <label>. Другие теги еще не пробовали, но <div> оставил его активным на главном экране, даже с атрибутом telephone=no.

Из предыдущих комментариев кажется очевидным, что метатег работал, но по некоторым причинам сломался в более поздних версиях iOS, по крайней мере, при некоторых условиях. Я бегу 4.0.1.

6 голосов
/ 25 июня 2015

Вы также можете использовать метку <a> с javascript: void(0) в качестве значения href.

Пример следующим образом:
<a href="javascript: void(0)">+44 456 77 89 87</a>

4 голосов
/ 27 апреля 2011

У меня была такая же проблема, но в веб-приложении для iPad.

К сожалению, ни ...

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

ни ...

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

... сработало.

Но вот три уродливых хака:

  • замена цифры "0" на букву "O"
  • замена числа "1" на букву "l"
  • вставить бессмысленный интервал: например, 555.5<span>5</span>5.5555

В зависимости от используемого шрифта первые два едва заметны. Последнее, очевидно, связано с лишним кодом, но невидимо для пользователя.

Kludgy взломает наверняка, и, вероятно, не будет жизнеспособным, если вы генерируете свой код динамически из данных, или если вы не можете загрязнить свои данные таким образом.

Но, достаточно в крайнем случае.

...