为什么在事件处理程序中返回false不适用于移动设备?

时间:2014-04-17 11:30:06

标签: javascript android mobile return-value

有人可以告诉我为什么这会在桌面浏览器上运行而不能在移动设备上运行?

case 'homepage':
        $('#locate').on('click', function () {
            var lat, lng, query;
            var url = $(this).attr('href');
            if (navigator.geolocation) {

                navigator.geolocation.getCurrentPosition(function (position) {
                    lat = position.coords.latitude;
                    lng = position.coords.longitude;
                    query = '?latitude=' + lat + '&longitude=' + lng;
                    var newUrl = url + query;
                    window.location.href = newUrl;

                });
                return false;
            }
        });
        break;

经过调查,我发现这段代码有效,但是我做了一些修正,因为它在手机上表现得很奇怪,所以我们最好在没有坐标的情况下向用户提供一些反馈

case 'homepage':
        $('#locate').on('click', function () {

            var lat, lng, query;
            var url = $(this).attr('href');

            function geoError(error) {
                var errors = {
                    1: 'Permission Denied',
                    2: 'Position unavailable',
                    3: 'Request timeout'
                };
                alert(errors[error.code] + ": means we can`t determine your position");
            }

            function geoSuccess(position) {
                lat = position.coords.latitude;
                lng = position.coords.longitude;
                query = '?latitude=' + lat + '&longitude=' + lng;
                alert(query);
                var newUrl = url + query;
                window.location.href = newUrl;
            }

            var options = {enableHighAccuracy: true, maximumAge: 0, timeout: 6000};

            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(geoSuccess, geoError, options);
            }
            return false;

           }
        });
        break;

如果用户在手机上启用了位置,那么这两个版本的代码都能正常工作,但如果他没有第二个版本更好,因为他会得到回应

0 个答案:

没有答案