【发布时间】:2019-02-04 03:53:00
【问题描述】:
我在 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 Windows 10。火狐:61.0.1
我已经尝试过的事情:
通过 HTTPs 使用应用程序
PositionOptions 对象的各种组合作为第三个参数传递给 navigator.geolocation.getCurrentPosition。
将 Firefox 从 61.0.1 降级到 53.0.3
-
摆弄 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: 真
geo.provider.ms-windows-位置:假
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();
}
【问题讨论】:
标签: javascript reactjs typescript firefox cross-browser