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

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

Ответы [ 24 ]

4 голосов
/ 18 мая 2011

У меня был 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).

4 голосов
/ 05 сентября 2011

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

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

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

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

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

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

2 голосов
/ 01 мая 2012

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

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

Пример некоторого 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 Portrait / Landscape

2 голосов
/ 14 февраля 2013

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

(604) 555<span></span> -4321
1 голос
/ 29 июля 2013

Я использую хитрость, которая работает не только с Mobile Safari, это использование escape-кодов HTML и небольшая наценка в номере телефона. Это делает браузер более трудным «идентифицировать» номер телефона, т.е.

Phone: 1-8&#48;&#48;<span>-</span>62&#48;<span>-</span>38&#48;3
1 голос
/ 09 июня 2016

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

. Очевидно, что это не правильное решение для большинства обстоятельств, но в некоторых оно будет правильным.
1 голос
/ 25 января 2012

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

1 голос
/ 12 июня 2015

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

1 голос
/ 29 апреля 2016

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

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

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

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