0

我有以下代码在页面上显示用户的邮政编码(如果你读过我最近的任何问题,它们都与此有关)。邮政编码通常会显示,除非在浏览器不支持地理定位的某些环境中。在这些情况下,页面不显示任何内容,并且没有错误记录到控制台。

JS

function getZipCode(geolocation) {
    if (geolocation) {
        geolocation.getCurrentPosition(function (position) {
           $.getJSON(
               "http://ws.geonames.org/findNearestAddressJSON?callback=?",
                {
                    lat : position.coords.latitude,
                    lng : position.coords.longitude
                },
                function (data) {
                    $(function () {
                        $('#zip').text(data.address.postalcode);
                    });
                }
            );
        });
    }
}

HTML

<div id="zip"></div>

有什么方法可以处理这个错误并在脚本没有返回结果时显示错误信息?我正在考虑将文本放在两者之间#zip,但是浏览器确实支持它的用户会在加载时看到该文本,即使它会改变,这将是一个糟糕的用户体验。

4

2 回答 2

2

您的脚本不会通过 if (geolocation) 检查。

简单地做

if (geolocation) {
//do stuff
}
else {
//notify user that his browser doesnt have geolocation
}
于 2012-08-18T17:14:10.623 回答
1

geolocation.getCurrentPosition()接受一个可选errorCallback参数。使用它来显示错误。

于 2012-08-18T18:28:33.777 回答