Подтвердить что ты не робот

Можете ли вы определить, имеет ли устройство возможности телефона (например, он может выполнять голосовые вызовы /SMS ) с помощью JavaScript?

Есть ли способ определить, способно ли мобильное устройство совершать голосовые вызовы/SMS-сообщения?

Это важно при применении ссылок tel: и sms: на веб-странице. Недостаточно просто обнаруживать мобильные устройства, поскольку планшеты не могут выполнять вызовы, iTouch не может выполнять вызовы и т.д.

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

4b9b3361

Ответ 1

Я не видел очевидного способа увидеть, что ссылки sms: и tel: получат специальное лечение.

Обновить: ниже показано, что @janogosteve подтвердила, что в настоящее время нет надежного обнаружения функции. Это выглядит необнаружимым.


Здесь вы найдете исчерпывающий способ проверить эту функцию. (Прочтите комментарий jangosteve ниже!)

  • сделать тестовую страницу с двумя из этих ссылок и обычной ссылкой http
  • захватить элементы, а затем переместить все их свойства, скопировать все это на объект.
  • также getComputedStyle информация для кучи подробностей о них и бросить это в объект также
  • JSON.stringify (этот материал, с которым вы можете справиться позже)

Выполните вышеуказанные действия на устройстве iOS и на рабочем столе Safari/Chrome

Затем JSON.parse их обратно в объекты... и используйте https://github.com/NV/objectDiff.js, чтобы увидеть, можете ли вы обнаружить какие-либо различия вообще.

Ответ 2

Новый сюжетный поворот в этой проблеме (по состоянию на февраль 2015 года) заключается в том, что многие браузеры для настольных ПК теперь поддерживают переадресацию вызовов, однако они не будут автоматически определять номера телефонов.

Итак, изящные трюки, плавающие вокруг, чтобы обнюхивать автоматическое обнаружение или сенсорный номер телефона, теперь устарели.

Mac OSX с тех пор, как Yosemite 10.9.2 поддерживает прямой доступ к звуку Facetime, а Windows 8/IE11 делает то же самое с помощью Skype. Не знаете о Chrome OS (Hangouts?). iPads используют звуковые вызовы Facetime.

Похоже, что все веб-браузеры с этого момента будут поддерживать клик-вызов. Вопрос в том, как предотвратить появление старых браузеров и пользователей ОС Windows при нажатии ссылки tel:.

Я создал Javascript-библиотеку, чтобы попытаться обнаружить более старых пользователей ОС Windows, которые до поддержки tel:, но это оказалось очень проблематичным и сложным.

Сейчас мой подход:

  • A) Оставьте его ссылкой для всех пользователей. Пользователи без браузера с поддержкой вызовов просто должны пострадать.
  • B) Используйте медиа-запрос, чтобы скрыть стиль ссылок для ширины обозревателя только в браузере, предполагая, что большинство пользователей настольных компьютеров не будут делая звонки со своего настольного ПК в любом случае.
  • C) Пропустите тег <a> и все настольные компьютеры и дайте автообнаружению привязать магию к мобильным устройствам.

Я не сумасшедший в отношении любого из этих решений, но я выбираю B до тех пор, пока браузер не изменит ландшафт в будущем. Таким образом, я контролирую тег <a>, пользователь настольного компьютера все равно может щелкнуть по телефону #, если он действительно этого хочет, и я могу легко поменять его в будущем.