IE 中的 JavaScript 地理位置零星

Posted

技术标签:

【中文标题】IE 中的 JavaScript 地理位置零星【英文标题】:JavaScript geolocation sporadic in IE 【发布时间】:2017-06-27 15:15:54 【问题描述】:

我有一个与this one 非常相似的问题,但我认为它在一个特别基本的方式上有所不同,足以证明它自己的问题。我有一个页面,它使用getCurrentPosition() 每 2 秒请求一次用户的位置(非常频繁,我知道,但这是有目的的)。这是我的代码:

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 错误。

我试过了:

getCurrentPosition() 中的enableHighAccuracy 选项更改为false,如我的代码所示

确保 IE 中的权限没有任何问题

将间隔时间延长至 5 秒

非常感谢任何意见。

编辑:

特别是 IE11。很抱歉错过了。

编辑 2:

我在使用 this example 时看到了相同的行为。第一次有效(显示坐标),但之后只显示错误,直到我重新加载。

【问题讨论】:

【参考方案1】:

所以这似乎是其他用户也遇到的 IE 问题。在 Edge 和 IE 支持页面上有一个关于它的question,但是 OP 说明 Edge 也无法正常工作(这对我来说表现良好)并且似乎被忽略了,这让它有点混乱。我已经对该线程发表了评论,如果没有任何结果,我可能不得不提出自己的问题,仅与 IE 有关。

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

【讨论】:

以上是关于IE 中的 JavaScript 地理位置零星的主要内容,如果未能解决你的问题,请参考以下文章

帮助用户发现 HTML5 地理位置提示

javascript中的全局变量来获取地理位置

地理定位功能中的 JavaScript 变量范围

未捕获的 TypeError:Javascript 中的非法调用(地理位置)

IE8 的 HTML5 地理位置

Javascript 中的反向地理编码返回 MissingKeyMap 错误