15

JavaScript 有没有办法检查客户端浏览器是否支持GEO-URI-scheme

我想将不受支持的浏览器的坐标显示为地图的链接

<a href='http://osm.org/#map=18/52.51627/13.37769'>Berlin</a>

对于受支持的浏览器(如智能手机),作为指向它们自己的本机应用程序的链接。

<a href='geo:52.51627,13.37769'>Berlin</a>
4

1 回答 1

7

不,没有。协议是否geo可用不取决于浏览器,而取决于底层操作系统。Android 的浏览器不知道它是否支持它,它会询问子系统是否有geoURI 的处理程序,如果有,则打开它。知道系统支持自定义 uri 的唯一方法是尝试打开一个链接,看看它是否有效。如果不完全打断用户,就没有办法自动执行此操作。

苹果的 maps.apple.com 就是一个很好的例子。他们使用服务器端 UA 嗅探将 maps.apple.com 重定向到可用的最佳站点。

尝试在任何 Mavericks 浏览器上访问http://maps.apple.com/?q=cupertino会导致他们向maps://url(Maps.app 应用程序的自定义 URI)发送 302。对于 iOS 设备也是如此。如果它是一个无法识别的浏览器,它将重定向到相应的 maps.google.com 地址,因为他们没有自己的地图网络存在。

于 2013-11-13T06:59:40.893 回答