Использование скобок в HTML с href=tel:

Удивлен, что нигде в Интернете не могу найти окончательного ответа на этот вопрос: я настраиваю переведенную HTML-страницу на французском языке с другим контактным номером, который начинается с «+33 (0)». Поскольку я не могу лично проверить это на этом номере - канонический вопрос: могу ли я обойтись без тега привязки, который начинается с <a href="tel:+33(0)...", т.е. имеет номер, заключенный в круглые скобки, за которым следуют остальные числа, и чтобы ссылка работала?


person jimiayler    schedule 10.06.2019    source источник
comment
Почему вы не можете проверить это лично? Большинство мобильных приложений просто открывают телефонное приложение с введенным номером, не набирая номер. Как и почти на все вопросы, касающиеся того, будет ли это работать, ответ можно найти, попробовав его и посмотрев, работает ли он...   -  person Heretic Monkey    schedule 10.06.2019
comment
Просто попробуй. Телефон на самом деле не будет звонить мгновенно, а скорее откроет ваш номер.   -  person DigitalJedi    schedule 10.06.2019
comment
На самом деле это было немного шуткой - я не мог позвонить по этому номеру, и, поскольку я не нашел этого ответа нигде в Интернете, я подумал, что если бы на него определенно ответили здесь, стоило опубликовать вопрос. Попытка получить канонический ответ действительно стоит отрицательного голоса?   -  person jimiayler    schedule 10.06.2019
comment
@HereticMonkey, со всем уважением, я должен не согласиться - пробовать и смотреть, работает ли это, - не очень хорошее решение для большинства случаев веб-разработки, если только у вас нет возможности попробовать и посмотреть, работает ли оно на каждой комбинации устройств и браузеров. Конечно, мы можем получить общее представление о том, будет ли что-то работать во многих случаях, но ОП ищет окончательный ответ. Возможно, jimiayler мог бы указать для всех устройств/браузеров, но я думаю, что окончательный вариант все же достаточно описывает то, что ищется. Голосование за вопрос.   -  person Luke    schedule 08.10.2019


Ответы (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/

person Luke    schedule 08.10.2019
comment
Отличный ответ! Это именно то, что я искал, и я благодарен за тщательность вашего ответа. - person jimiayler; 09.10.2019

() в атрибуте href не должно быть проблемой: (с точки зрения href)

http://example.com/test(1).html

ОДНАКО, если я выполню a href="tel:+000 (1) 000 000", после перехода по ссылке на телефоне на циферблате моего телефона будет отображаться +0001000000 Это проверено и подтверждено на устройстве Android.

Это означает, что скобки удаляются, как и пробелы.

Но это все еще может варьироваться из-за разных ОС на телефоне.

P.S.:

Если вы считаете, что + в вашем номере является проблемой... Я тоже проверял это, и + не ведет себя неожиданно.

БОЛЬШЕ: href=tel: и мобильные номера

person DigitalJedi    schedule 10.06.2019
comment
Как отмечено в заголовке, вопрос не в использовании знаков плюс, а в использовании скобок. - person jimiayler; 10.06.2019
comment
@jimiayler где это сказано? Я не могу найти ничего, связанного со скобками в вопросе. []... начинается с +33 (0). заставляет меня думать, что + это то, о чем вопрос - person DigitalJedi; 10.06.2019
comment
Заголовок этого вопроса: Использование круглых скобок в HTML с «href=tel:». Я думал, что это сделало вопрос простым — по-видимому, нет. Я добавлю его в тело самого вопроса. - person jimiayler; 10.06.2019
comment
Извините, мб, но позвольте мне спросить вас вот о чем... Скобки когда-нибудь были для вас проблемой при использовании href? example.com/test(1).html ;) - person DigitalJedi; 10.06.2019
comment
Что ж, приятно знать, что я могу создавать URL-адреса со скобками, хотя, вероятно, я не буду делать это в ближайшее время. :) Но, опять же, связанные числа имеют другой результат, и я надеялся, что этот вопрос ответит на этот вопрос определенно, а не станет поводом для моего представителя SO принять удар (или не исключительно). - person jimiayler; 10.06.2019
comment
Я обновил свой ответ, а также проверил конкретное число, чтобы быть уверенным на 100%. Проверьте это - person DigitalJedi; 10.06.2019
comment
Итак, опять же, я ищу что-то каноническое — просто попробовать/это сработало на моем телефоне сегодня — это нормально, но это не тот ответ, который я ищу. Это нечисловые символы, и кажется разумным хотеть четко определить, что является стандартом для них. Это единственная причина, по которой я разместил этот вопрос, и я действительно должен снова возражать против того, чтобы за него проголосовали по неправильным причинам. - person jimiayler; 18.06.2019
comment
@jimiayler Я согласен с тобой. Я думаю, что это отличный вопрос, и ответы, которые вам были предоставлены (я только что проверил это, и он работал нормально), не сокращают его. - person Luke; 08.10.2019

Читаю и помню правильный формат должен быть: +33.1 23 45 67 89 Но не могу найти откуда.

person Agnes    schedule 04.11.2020