Обнаружение гео-URI-поддержки
Есть ли способ с помощью JavaScript проверить, поддерживает ли клиент-браузер схему GEO-URI?
Я хочу показать координаты для неподдерживаемых браузеров в качестве ссылки на карту
<a href='http://osm.org/#map=18/52.51627/13.37769'>Berlin</a>
и для поддерживаемых браузеров (таких как смартфоны) в качестве ссылки на их собственные нативные приложения.
<a href='geo:52.51627,13.37769'>Berlin</a>
2 ответа
Нет, нет Или нет geo
Протокол доступен не до браузера, а из-за операционной системы. Браузер Android не знает, может ли он его поддерживать, он спрашивает подсистему, есть ли у него обработчик для geo
URI, и если это так, откройте его. Единственный способ узнать, что система поддерживает пользовательский URI, - это попытаться открыть ссылку и посмотреть, работает ли она. Не было бы способа сделать это автоматически без полного вмешательства пользователя.
Хороший пример того, как лучше всего это сделать, - это maps.apple.com от Apple. Они используют сниффинг UA на стороне сервера, чтобы перенаправить maps.apple.com на лучший доступный сайт.
Попытка перейти на http://maps.apple.com/?q=cupertino в любом браузере Mavericks приведет к отправке 302 на maps://
url (пользовательский URI для приложения Maps.app). То же самое для устройств iOS. Если это неопознанный браузер, он будет перенаправлен на соответствующий адрес maps.google.com, так как у них нет своего собственного веб-присутствия карт.