IE中

时间:2017-06-27 15:15:54

标签: javascript geolocation

我有一个与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看到相同的行为。第一次工作(显示坐标)但之后只是显示错误,直到我重新加载。

1 个答案:

答案 0 :(得分:0)

所以这似乎是其他用户也有IE的问题。在Edge和IE支持页面上有一个关于它的question,但OP有点混淆说Edge也没有工作(这对我来说很好)并且似乎被忽略了。我已对该主题发表评论,如果没有任何结果,我可能不得不提出与IE相关的问题。

对我来说似乎非常重要 - 如果开发人员在需要时无法使用getCurrentLocation(),他们的网站将无法在IE中正常运行。我希望微软感兴趣。