Как отключить ссылку на номер телефона в Mobile Safari?

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

Ответ 1

Это, по-видимому, правильная вещь, согласно Сафари HTML Reference:

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

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

Вот соответствующая страница в Apple Developer Library.

Ответ 2

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

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;

Ответ 3

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

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

Первое правило отключает клик, второй - стиль.

Ответ 4

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

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

Ответ 5

Я использую сток-станцию ​​с нулевой шириной &zwj;

Просто поместите это где-нибудь в номер телефона, и это работает для меня. Протестировано в BrowserStack (и Litmus для писем).

Ответ 6

Решение для 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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

и...

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

... работал.

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

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

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

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

Но, хватит на щепотку.

Ответ 10

У меня был ABN (австралийский бизнес-номер), который iPad Safari настаивал на превращении в ссылку номера телефона. Ни одно из предложений не помогло. Мое решение состояло в том, чтобы поместить img-теги между номерами.

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

Класс существует только для документирования тэгов img.

Работает на iPad 1 (4.3.1) и iPad 2 (4.3.3).

Ответ 11

Мой опыт такой же, как и некоторые другие. Метатег...

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

... работает, когда веб-сайт работает в Mobile Safari (т.е. с хром), но перестает работать при запуске как webapp (т.е. сохраняется на главном экране и работает без хрома).

Мое меньшее, чем идеальное решение - вставить значения в поля ввода...

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

Это меньше, чем идеально, потому что, несмотря на то, что граница не установлена ​​ни на один, iOS отображает серию над несколькими пикселями над полем. Но, это лучше, чем видеть номер как ссылку.

Ответ 12

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

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

Ответ 13

<meta name = "format-detection" content = "telephone=no"> не работает для писем: если HTML, который вы готовите, предназначен для электронной почты, метатег будет проигнорирован.

Если вы нацеливаете электронные письма, вот еще одно уродливое решение для ya'll:

Пример какого-либо HTML-кода, который вы хотите избежать связывания или автоматического форматирования:

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

И CSS, который сделает волшебство:

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

Недостаток: вам может понадобиться медиа-запрос для каждой из списков портретов/ландшафтов ipad/iphone

Ответ 14

Я сам это испытал и обнаружил, что он работает, хотя это, конечно, не изящное решение. Вставка пустого диапазона в номер телефона не позволит детекторам данных превратить их в ссылку.

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

Ответ 15

Вы можете попробовать кодировать их как объекты HTML:

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

Ответ 16

Такая же проблема в приложении Sencha Touch разрешена с помощью метатега (<meta name="format-detection" content="telephone=no">) в index.html приложения.

Ответ 17

Этот ответ превосходит все по состоянию на 6-13-2012:

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

Измените цвет на то, что соответствует вашему тексту, украшение текста удаляет подчеркивание, события указателя останавливают его от просмотра в виде ссылки в браузере (указатель не меняется на руку)

Это идеально подходит для электронных писем HTML на ios и в браузере.

Ответ 18

Трюк, который я использую, работает не только с Mobile Safari, но и с использованием кода эвакуации HTML и небольшой надбавки в телефонном номере. Это затрудняет для браузера "идентификацию" номера телефона, т.е.

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

Ответ 19

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

Если вы просто хотите удалить автоматическое редактирование, но сохраните ссылку, просто добавьте ее в свой CSS...

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

Ответ 20

У меня тоже есть эта проблема: Safari и другие мобильные браузеры преобразуют идентификаторы НДС в телефонные номера. Поэтому я хочу, чтобы чистый метод избегал его на одном элементе, а не на всей странице (или на сайте).
Я использую возможное решение, которое я нашел, оно является субоптимальным, но все же оно довольно жизнеспособно: я помещаю внутри номера, я не хочу стать ссылкой tel:, объект &#8288; HTML, который является Невидимый персонаж Word-Joiner. Я старался оставаться более семантическим (ну, по крайней мере, своего рода), помещая этот char в какое-то значение, например. для идентификатора НДС я выбрал его между разными группами цифр в соответствии с его формат, поэтому для итальянского НДС я написал: 0613605&#8288;048&#8288;8 который отображается в 0613605⁠048⁠8 и не преобразуется в номер телефона.

Ответ 21

Другой вариант - заменить дефисы в вашем телефонном номере символом (U + 2011 "Unicode Non-Breaking Hyphen" )

Ответ 22

Я был немного смущен этим, но, наконец, понял это. Мы внесли обновления на наш сайт и некоторые номера конвертировали в ссылку, а некоторые - нет. Оказывается, что числа не будут преобразованы в ссылку, если они находятся в <fieldset> . Очевидно, что это не правильное решение для большинства обстоятельств, но в некоторых из них оно будет правильным.

Ответ 23

Разбить номер на отдельные блоки текста

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

Ответ 24

Другим решением будет использование изображения IP-адреса