Удивлен, что нигде в Интернете не могу найти окончательного ответа на этот вопрос: я настраиваю переведенную HTML-страницу на французском языке с другим контактным номером, который начинается с «+33 (0)». Поскольку я не могу лично проверить это на этом номере - канонический вопрос: могу ли я обойтись без тега привязки, который начинается с <a href="tel:+33(0)..."
, т.е. имеет номер, заключенный в круглые скобки, за которым следуют остальные числа, и чтобы ссылка работала?
Использование скобок в HTML с href=tel:
Ответы (3)
Хороший вопрос. Трудно найти четкий авторитетный ответ относительно href="tel:"
.
RFC 3986 (раздел 2.2) определяет круглые скобки как "зарезервированные разделители". Это означает, что они могут иметь особое значение при использовании в определенных частях URL. RFC говорит:
Приложения, создающие URI, должны процентно кодировать октеты данных, которые соответствуют символам в зарезервированном наборе, если только эти символы специально не разрешены схемой URI для представления данных в этом компоненте. Если зарезервированный символ найден в компоненте URI, и для этого символа неизвестна роль разделителя, тогда он должен интерпретироваться как представляющий октет данных, соответствующий кодировке этого символа в US-ASCII.
(выделено мной)
По сути, в URL-адресе можно использовать любой символ из набора символов US-ASCII. Но в некоторых ситуациях круглые скобки зарезервированы для определенных целей, и в таких случаях они должны быть закодированы в процентах. В противном случае их можно оставить как есть.
Итак, да, вы можете использовать скобки в href="tel:"
ссылках, и они должны работать во всех браузерах. Но, как и в случае любого веб-стандарта в реальном мире, производительность зависит от того, правильно ли каждый браузер реализует этот стандарт.
Однако что касается вашего примера (<a href="tel:+33(0)...
), я бы избегал указанного вами формата, а именно:
[country code]([substituted leading 0 for domestic callers])[area code][phone number]
Хотя мне не удалось найти подробное руководство о том, как браузеры обрабатывают такие случаи, я думаю, вы обнаружите, как указал @DigitalJedi, что некоторые (возможно, все?) браузеры удалят круглые скобки и оставят содержащееся в них число, что приведет к неверный номер.
E.g.
<a href="tel:+33(0)1234567890">+33 (0) 123 456 7890</a>
будет/может привести к звонку по номеру +3301234567890. Будет ли это работать? Может быть? Теперь мы входим на территорию маршрутизации телефонных номеров.
Некоторые браузеры/устройства могут быть достаточно умными, чтобы понять, что предназначено, и соответствующим образом адаптироваться, но я бы не рискнул и вместо этого просто использовал:
[country code][area code][phone number]
E.g.
<a href="tel:+331234567890">+33 (0) 123 456 7890</a>
Нет недостатка (о котором я знаю) в том, чтобы ваши местные пользователи набирали международный код страны - это приведет к тому же результату, как если бы он был опущен и заменен начальным нулем.
Вот некоторая полезная информация об обработке браузером телефонных ссылок: https://css-tricks.com/the-current-state-of-telephone-links/
()
в атрибуте href
не должно быть проблемой: (с точки зрения href)
http://example.com/test(1).html
ОДНАКО, если я выполню a href="tel:+000 (1) 000 000"
, после перехода по ссылке на телефоне на циферблате моего телефона будет отображаться +0001000000
Это проверено и подтверждено на устройстве Android.
Это означает, что скобки удаляются, как и пробелы.
Но это все еще может варьироваться из-за разных ОС на телефоне.
P.S.:
Если вы считаете, что +
в вашем номере является проблемой... Я тоже проверял это, и +
не ведет себя неожиданно.
БОЛЬШЕ: href=tel: и мобильные номера
+
это то, о чем вопрос
- person DigitalJedi; 10.06.2019
Читаю и помню правильный формат должен быть: +33.1 23 45 67 89 Но не могу найти откуда.