在Firefox中未触发navigator.geolocation.getCurrentPosition的回调

时间:2018-08-29 11:12:04

标签: javascript reactjs typescript firefox cross-browser

我在React Component内部有函数,该函数负责获取用户的位置。

    export default class SomeComponent extends React.Component<SomeProps, SomeState> {
    constructor(props: any) {
    super(props)
    //initializing state here...
    }
      componentDidMount() {
        this.getCurrentPosition()
      }

    getPosition = () => {
    console.log('get current position') //it's firing
      navigator.geolocation.getCurrentPosition((position: Position) => {
        console.log('pos', position) // not firing in any case
        //do stuff here..
      },
        (error: any) => {
          console.log(error) //not firing in any case
            //do stuff here..
        })
    }
}

我的问题是,这种方法在Chrome / Edge中工作得很好,但是在Firefox中,没有navigator.geolocation.getCurrentPosition回调触发。 操作系统:MS Windows10。Firefox:61.0.1

我已经尝试做的事情:

  1. 通过HTTP使用应用程序

  2. PositionOptions对象的各种组合作为第三个参数传递给navigator.geolocation.getCurrentPosition。

  3. 将Firefox从61.0.1降级到53.0.3

  4. 具有 about:config 地理选项。例如,改变 来自的geo.wifi.uri https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_API_KEY%https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%

    当前地理位置选项:
    geo.enabled:true
    geo.provider.ms-windows-location:false
    geo.wifi.uri: https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_API_KEY%
    geo.wifi.xhr.timeout:60000

5以普通的javascript方式重新组装getPosition并从tsx组件中调用它。

 // navigator.js

    function succ(pos){
       console.log('pos', pos)
    }
    function err(err){
       console.log('err', err)
    }
    export default function Nav(){
       console.log('nav')
       navigator.geolocation.getCurrentPosition(succ, err);
    }

    //SomeComponent.tsx
    import Nav from '../containers/navigator.js'
      componentDidMount() {
        Nav();
      }

2 个答案:

答案 0 :(得分:0)

在浏览器中粘贴about:config,并查看是否在其中启用了地理位置服务。您可以在 Mozilla支持

中找到最合适的here

答案 1 :(得分:0)

此问题是由于同时使用react-geolocated的lib和navigator.geolocation.getCurrentPosition()引起的。回调未触发,可能是因为Firefox认为地理位置已解决。 注释掉react-geolocated的lib使用情况很有帮助。