Як видалити синій стиль телефонних номерів на iPhone / iOS?


198

Чи є спосіб видалити синій колір гіперпосилання за замовчуванням з телефонного номера при перегляді на iPhone? Як додати певний тег мобільного Safari або CSS?

У мене це є лише номер:

<p id="phone-text">Call us on <strong>+44 (0)20 7194 8000</strong></p>

І гіперпосилань немає, але iPhone все ще надає цей текстовий номер як гіперпосилання. У мене є проблема візуалізації на деяких моїх веб-сайтах, але я не можу зрозуміти, чому це відбувається.

Я читав цю публікацію:

Номери мобільного HTML-рендерінгу

Але чи можливе єдине рішення?


Не зовсім впевнений, чи це одне й те саме, чи можете ви перевірити, будь ласка? stackoverflow.com/questions/3712475/…
Pekka

3
@ Пекка: Я думаю, це питання схоже, але чітке. Йшлося про те, щоб щось не було неправильно трактовано як номер телефону. Це, мабуть, стосується того, щоб реальні номери телефонів не зводили нанівець ваш дизайн.
Чак

Відповіді:


418

Два варіанти ...

1. Встановіть format-detectionметатег.

Для того, щоб видалити всі автоматичне форматування номерів телефонів, додати це до headвашого htmlдокументу:

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

Перегляньте більше специфічних для тегів Apple метатегів .

Примітка. Якщо у вас є телефонні номери на сторінці з цими номерами, їх слід вручну відформатувати як посилання:

<a href="tel:+1-555-555-5555">1-555-555-5555</a>

2. Неможливо встановити метатег? Хочете скористатися css?

Два cssваріанти:


Варіант 1 (краще для веб-сторінок)

Націляйте посилання на hrefзначення, починаючи з telцього засобу вибору атрибутів css:

a[href^="tel"] {
  color: inherit; /* Inherit text color of parent element. */
  text-decoration: none; /* Remove underline. */
  /* Additional css `propery: value;` pairs here */
}

Варіант 2 (краще для html-шаблонів електронної пошти)

Крім того, ви можете, коли ви не можете встановити метатег (наприклад, у html-пошті), загортати номери телефонів у теги посилань / прив’язки ( <a href=""></a>), а потім націлювати їх на стилі, використовуючи css, подібний до наведеного нижче, і коригувати конкретні властивості, які потрібно скинути :

a[x-apple-data-detectors] {
  color: inherit !important;
  text-decoration: none !important;
  font-size: inherit !important;
  font-family: inherit !important;
  font-weight: inherit !important;
  line-height: inherit !important;
}

Якщо ви хочете націлити конкретні посилання, використовуйте класи на ваших посиланнях, а потім оновіть селектор css вище на a[x-apple-data-detectors].class-name.


Привіт, Босміт, дякую за вашу відповідь. Зрештою, закінчивши деякий час тому своє перше рішення ... просто задумався, чи є інше рішення проблеми.
Рено

1
@Beau Smith, який працював і на мене, але не на сафарі iPod 1-го покоління. Чи є якийсь конкретний тег для цього старого браузера?
Ладо Ломідзе

12
45 відповідей і все ще не зробили це рішення? :)
kaleazy

Це відповідь. Була сторінка контактів, на якій цифри не відображатимуться на iPad та iPhone. Це зробило трюк, дякую!
tahdhaze09

1
RE використовуючи посилання 'tel:' на номери телефонів для розмітки: також пропонується використовувати мікроформати як альтернативу ( ux.stackexchange.com/a/21121/36009 ).
Девід Кук

163

Просто для детальної розробки попередньої пропозиції Девіда Томаса:

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

Додавання цього до вашого css залишає функціональний номер телефону, але знімає підкреслення та відповідає кольору, який ви використовували спочатку.

Дивно, що я можу розмістити власну відповідь, але не можу відповісти на чужі.


1
Це найкраще рішення, Але воно повинно бути таким, як я вважаю: a [href ^ = "tel"] {color: nasledit; оформлення тексту: немає; } Принаймні, це для мене працювало. Вам потрібні подвійні лапки (""), як згадується тут: stackoverflow.com/questions/3859101/what-does-ahref-do-in-css
Panagiotis Palladinos

Я додав цитати. Хоча це може працювати без використання лапок, специфікації CSS вимагають їх для рядків. Спасибі Панайотис.
Silverback

Дякую! Це зводило мене з розуму. Найкраща відповідь для збереження функціональності (і, мабуть, це має бути визнана відповідь!)
Rexxo

28

Якщо ви хочете зберегти функцію номера телефону, але просто видалити підкреслення для відображення, ви можете надати посилання як будь-яке інше:

a:link {text-decoration: none; /* or: underline | line-through | overline | blink (don't use blink. Ever. Please.) */ }

Я не бачив документації, яка передбачає, що клас застосовується до посилань на номер телефону, тому вам доведеться додавати класи / ідентифікатори до посилань, які ви хочете мати інший стиль.

Можна також стилізувати посилання за допомогою:

a[href^=tel] { /* css */ }

Що розуміє iPhone, і не застосовуватиметься (наскільки я знаю, можливо, користувачі Android / Devs можуть коментувати Android, Blackberry тощо) будь-яким іншим UA.


6
Це, мабуть, хороша ідея використовувати, a[href^=tel:]щоб ви не випадково відповідали hrefs і telephone.htmlт. Д.
Маттіас Вадман

1
@MattiasWadman ваша пропозиція не працювала для мене в Chrome або мобільному Safari.
cfx

13

Якщо люди знайдуть це питання в Google, все, що вам потрібно зробити, - це розглядати номер телефону як посилання, оскільки Apple автоматично встановить його як один.

ваш HTML

<p id="phone-text">Call us on <strong>+44 (0)20 7194 8000</strong></p>

ваш css

#phone-text a{color:#fff; text-decoration:none;}

Це те, що я шукав, усі найпопулярніші коментарі не згадують це прямо.
n8win

10

Оскільки ми використовуємо тел: посилання на сайт із ввімкненою піктограмою телефону: перед більшістю розміщених тут рішень вводиться ще одна проблема.

Я використовував метатег:

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

Це поєднується із зазначенням тел: посилання на весь сайт, де його слід пов’язати!

Використання css - це справді не варіант, оскільки він приховує відповідні тел-посилання.


1
Дякую за це! Відмінно працює на Кордові / Іонічному.
TechnoTim

6

Простий фокус спрацював для мене, додавши прихований об’єкт посеред номера телефону.

<span style="color: #fff;">
0800<i style="display:none;">-</i> 9996369</span>

Це допоможе вам змінити колір номера телефону для IOS.


Він працює, але порушує функціональність посилань. Для того, щоб потрібні речі в крайній мірі (як сьогодні), це добре.
karolus

1
Ваш приклад не працював для мене, але столяр нульової ширини & zwj; зробив трюк.
Der_Meister

5

Старе запитання, але як жоден із наведених відповідей не був для мене гарним, я публікую, як я його вирішив

У мене в списку є номер телефону:

<li class="phone_menu">+555 5 555 55 55</li>

css:

.phone_menu{
  color:orange;
}

Але на iPad / iPhone він був чорним, тому я просто додав це до css:

.phone_menu a{
  color:orange;
}

4
a[href^=tel]{
    color:inherit;
    text-decoration: inherit;
    font-size:inherit;
    font-style:inherit;
    font-weight:inherit;


2

Я їхав між собою і назад

1.

    <a href="tel:5551231234">

2.

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

Намагаються, щоб той самий код працював для робочого столу та iPhone. Проблема полягала в тому, що якщо використовується перша опція, і ви натискаєте її на робочий стіл браузера, він видає повідомлення про помилку, а якщо використовується другий, він вимикає функцію вкладки для виклику на iPhone iOS5.

Тому я спробував і спробував, і виявилося, що iPhone трактує номер телефону як особливий тип посилання, який можна відформатувати за допомогою CSS як єдиний. Я загорнув номер у тег адреси (він буде працювати з будь-яким іншим тегом HTML, просто спробуйте уникнути <a>тегу) і стилізував його у CSS як

.myDiv address a {color:#FFF; font-style: normal; text-decoration:none;}

і це спрацювало - у настільному браузері показаний звичайний текст, а в мобільному телефоні Safari показано як посилання на спливаюче вікно виклику / скасування на вкладці та без синього кольору та підкреслення за замовчуванням.

Будьте обережні з правилами css, застосованими до числа, особливо при використанні padding / margin.


2

Не потрібно видаляти виявлення формату за допомогою <meta name="format-detection" content="telephone=no">. Спробуйте використовувати номер телефону в будь-якому тезі, а не прикріплювати тег і відповідно до цього стилю, наприклад:span { background:none !important; border:0; padding:0; }


1

<meta name="format-detection" content="telephone=no">. Цей метатег працює у веб-переглядачі Safari за замовчуванням на пристроях iOS і працюватиме лише для телефонних номерів, не загорнутих у телефонний зв’язок.

1-800-123-4567
<a href="tel:18001234567">1-800-123-4567</a>

перший рядок не буде форматований як посилання, якщо ви вказали метатег, але другий рядок буде, тому що він загорнутий у телефонний якір.


Ви можете відмовитися від метатегів разом і використовувати Mixin, наприклад

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

щоб підтримувати призначений для стилювання ваших телефонних номерів, але ви повинні переконатися, що ви загорнули їх у телефонний якір.

Якщо ви хочете бути особливо обережними та захищатись від події телефонного номера, який не належним чином відформатований за допомогою обгорткового тега якоря, ви можете ознайомитись із DOM та налаштувати цей сценарій. За бажанням відрегулюйте схему заміни.

$('body').html($('body').html().replace(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})/g, '<a href="tel:+1$1$2$3">($1) $2-$3</a>'));

а ще краще без jQuery

document.body.innerHTML = document.body.innerHTML.replace(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})/g,'<a href="tel:+1$1$2$3">($1) $2-$3</a>');

1

Якщо ви не маєте наміру мати будь-які телефонні номери на своїй сторінці, тоді це <meta name="format-detection" content="telephone=no"> буде добре. Але риторично кажучи, що робити, якщо ви маєте намір використовувати суміш телефонних та нетелефонних номерів?

Якщо припустити, що ви просто жорстко кодуєте номери у своєму HTML, хаки "вставити середину ваших цифр" будуть працювати. Але для динамічних сторінок вони мало корисні, як-от використання PHP для виведення числових даних із запиту.

Як приклад, я формував список населення міста. Деякі групи населення були досить великими, щоб мобільний Safari перетворив їх на посилання на телефонні номери. На щастя, все, що я повинен був зробити, це використовувати PHP number_format()навколо виводу масиву, щоб вставити "тисячі" коми:

<?php echo number_format($row["population"]) ?>

Такого форматування було достатньо, щоб переконати Mobile Safari, що для цього номера є дещо більш конкретна мета, тому він більше не зазначав мої більші номери на телефонні посилання. Те саме стосується пропозиції @davidcondrey щодо використання <a href="tel:18001234567">1-800-123-4567</a>призначення для числа.

Підсумок полягає в тому, що Safari Mobile очевидно звертає увагу на семантику. Зважаючи на те, що HTML5 побудований на основі семантичної розмітки, а пошукові системи покладаються на семантичну розмітку, я маю намір використовувати її наскільки це можливо.


1

Якщо розмістити номер у <fieldset>, це не дозволить iOS перетворити номер у посилання з якихось причин. У деяких випадках це може бути правильним рішенням. Я не прихильник відключення переходу на посилання.


1

iOS робить номери телефонів, які можна натискати за замовчуванням (з очевидних причин). Звичайно, це додає додатковий тег, який переважає ваш стиль, якщо ваш номер телефону вже не є посиланням.

Щоб виправити це, спробуйте додати це до таблиці стилів: a[href^=tel] { color: inherit; text-decoration: none; }

Це повинно підтримувати ваші телефонні номери, як ви очікували, без додавання додаткової розмітки.


0

Спробуйте використати символ ASCII для тире між розрядними знаками.

від цього: -

до цього: &ndash;

напр .: зміни 555-555-5555=>555&ndash;555&ndash;5555



0

У Joomla Yootheme працює для мене:

a:not([class]) {
    color: #fff !important;
}


-2

Якщо ви просто хочете, щоб телефонні номери взагалі не були посиланнями, спробуйте скористатися тегом шрифту:

<p>800<font>-</font>555<font>-<font>1212</p>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.