我有一个与this one非常相似的问题,但是他认为它在一个特别基本的方面有所不同,足以保证自己的问题。我有一个页面,每2秒(非常频繁,我知道,但它是出于某种目的)使用getCurrentPosition()
请求用户的位置。这是我的代码:
function locationWrapper() {
if (!navigator.geolocation) {
success = false;
console.log("Geolocation is not supported by this browser")
}
if (success) {
navigator.geolocation.getCurrentPosition(
recordPosition, catchError, { enableHighAccuracy: false }
);
}
}
recordPosition()
函数并没有真正针对这个问题做任何相关的事情(并且很少会达成)。 catchError
看起来像这样:
function catchError(error) {
console.log(error);
switch (error.code) {
case error.PERMISSION_DENIED:
console.log("User denied the request for Geolocation.");
case error.POSITION_UNAVAILABLE:
console.log("Location information is unavailable.");
break;
case error.TIMEOUT:
console.log("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
console.log("An unknown error occurred.");
break;
}
}
一切都相当简单。这在Chrome中完美运行,在IE中只有有时。这是令人困惑的事情。它在JS文档的最开始处调用一次,然后由setInterval()
函数每2秒调用一次。第一个始终有效,并且在该时间间隔内它大约可以工作20次,但否则会返回非常有帮助的POSITION_UNAVAILABLE
错误。
我尝试过:
将enableHighAccuracy
中的getCurrentPosition()
选项更改为false
,如我的代码所示
确保IE中的权限没有任何问题
将间隔时间延长至5秒
非常感谢任何输入。
修改
具体是IE11。很抱歉错过了。
编辑2:
我使用this example看到相同的行为。第一次工作(显示坐标)但之后只是显示错误,直到我重新加载。
答案 0 :(得分:0)
所以这似乎是其他用户也有IE的问题。在Edge和IE支持页面上有一个关于它的question,但OP有点混淆说Edge也没有工作(这对我来说很好)并且似乎被忽略了。我已对该主题发表评论,如果没有任何结果,我可能不得不提出与IE相关的问题。
对我来说似乎非常重要 - 如果开发人员在需要时无法使用getCurrentLocation()
,他们的网站将无法在IE中正常运行。我希望微软感兴趣。