IE 11中的导航器地理位置watchPosition和长时间运行的脚本(由于该浏览器崩溃)

时间:2018-08-14 09:02:33

标签: javascript html5 geolocation navigator

我试图在点击事件中使用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设置监视,则第二次单击将连续循环而不清除,因此浏览器坠毁。有什么遗漏的吗?

0 个答案:

没有答案