Dev*_*ate 9 javascript user-experience google-chrome-devtools
我刚刚更新到Chrome 64,并开始在我们的网络应用中注意到此消息:
[Violation] Only request geolocation information in response to a user gesture.
Run Code Online (Sandbox Code Playgroud)
这似乎过于严格.当我在Google地图中导航时,我不必反复点击"更新位置".位置轮询的替代方案是什么?
我们目前使用以下代码:
let locInt = self.setInterval(function(){
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
},5000);
Run Code Online (Sandbox Code Playgroud)
我们的应用程序是基于位置的,并依赖于不断更新的位置.这里的首选方法是什么?
Ste*_*han 16
似乎谷歌建议不要在页面加载时加载地理位置:
用户对在页面加载时自动请求其位置的页面不信任或混淆.不是在页面加载时自动请求用户的位置,而是将请求绑定到用户的手势,例如点击"查找我附近的商店"按钮.确保手势清楚明确地表达了对用户位置的需求.
如果您使用watchPosition()或者无关紧要getCurrentPosition():
Lighthouse收集在页面加载时执行的JavaScript.如果此代码包含对geolocation.getCurrentPosition()或geolocation.watchPosition()的调用,并且尚未授予地理位置权限,则请求用户的位置.
我们还注意到,自Chrome更新以来,用户的地理位置出现了大幅延迟.
该watchPosition()方法使您可以注册一个处理程序,每次设备位置更改时,浏览器都会自动调用该处理程序。这比轮询更可取。
id = navigator.geolocation.watchPosition(success[, error[, options]])
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/zh-CN/docs/Web/API/Geolocation/watchPosition
| 归档时间: |
|
| 查看次数: |
9843 次 |
| 最近记录: |