我试图在点击事件中使用navigator.geolocation.getCurrentPosition
来获取当前位置,所以在所有浏览器上都可以正常运行,并且期望IE11。在IE(第一次正常运行)中,如果您第二次返回错误消息,触发点击事件。因此,当我从SO获得一种解决方案时,基于此解决方案,我使用了navigator.geolocation.watchPosition
在某个时间间隔上检查位置。
var isPosistionDisplayed = false;
function findGeolocation() {
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
},
watchId = null,
isIE = document.documentMode;
if (typeof navigator.geolocation === 'undefined') {
return;
}
if(isPosistionDisplayed && isIE) {
watchId = navigator.geolocation.watchPosition(function(position) {
_findForLocation(position.coords.latitude, position.coords.longitude, STARTPAGE, _displayLocation);
navigator.geolocation.clearWatch(watchId);
watchId = null;
isPositionDisplayed = false;
}, function() {
_error();
}, options);
} else {
navigator.geolocation.getCurrentPosition(function(position) {
_findForLocation(position.coords.latitude, position.coords.longitude, STARTPAGE, _displayLocation);
isPositionDisplayed = true;
}, function() {
_error();
});
}
}
根据上述功能,它是单击事件的回调,因此对于第一次单击,它将使用getCurrentPosition
;如果是IE设置监视,则第二次单击将连续循环而不清除,因此浏览器坠毁。有什么遗漏的吗?