javascript - iOS WebApp 不允许定位服务?

标签 javascript jquery iphone ios iphone-standalone-web-app

我有以下 JS,它获取用户的当前位置并显示他们的邮政编码...

(function ($, 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);
                    });
                }
            );
        });
    }
}(jQuery, navigator.geolocation));

请在 CodeReview 上提供帮助,因为我的原始代码非常糟糕,https://codereview.stackexchange.com/questions/13481/to-use-or-not-to-use-public-variables-in-javascript/13483#comment21844_13483

HTML:

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

...然后在 div 中显示邮政编码。

这在 Mobile Safari 和桌面 Safari 中运行良好,但只要我添加 apple-mobile-web-app-capable 元标记,代码就会中断。

我在每个步骤后都将代码记录到控制台,并且在常规 Safari 和 Mobile Safari 中都可以顺利运行。不过,一旦我将它添加到我的主屏幕(头部有元标记),该应用程序甚至不会运行 JS 代码。它也没有登录到控制台,这让我想知道 WebApps 中是否允许定位服务。

如果从主屏幕运行时重新加载页面,也会出现此问题。

有办法解决这个问题吗?这是一个常见问题吗?

最佳答案

是的,iOS 网络应用程序使用 apple-mobile-web-app-capable 元标记,允许通过 navigator.geolocation 进行定位服务。您没有错误回调,这可能会给您提示问题。发布您的 HTML 以供进一步分析。

试着把这个放在页面上(设置了 apple-mobile-web-app-capable):

navigator.geolocation.getCurrentPosition( function ( position ) {
    alert( 'yay!' );    
},
function ( error ) {
    alert( 'boo! error: ' + error.message );
} );

根据您的评论,这是有效的,所以它不是定位服务。尝试更改最后一行括号的顺序。

} )( jQuery, window.navigator.geolocation );

此外,这看起来有点奇怪,因为对 .text() 的调用会立即发生,而不是在 .getJSON() 完成时发生:

function (data) {
    $(function () {
        $('#zip').text(data.address.postalcode);
    });
}

尝试:

function (data) {
    $('#zip').text(data.address.postalcode);
}

所以你的最终代码应该是这样的:

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

关于javascript - iOS WebApp 不允许定位服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480151/

相关文章:

ios - 如何确定图像是否为 Objective-C 中的渐进式 JPEG(隔行扫描)

iphone - 如何识别iPhone/iPad用户的itunes账号信息?

iphone - 库依赖于另一个库

javascript - 在终端中的js文件之间传递变量...

javascript - 如何在 JavaScript 中使用单个 for 循环访问二维数组?

javascript - 动画后定义文本的高度和宽度

javascript - 一次滚动左 div 和右 div

javascript - 通过 VBA 从 IE 页面的下拉列表中选择一个值

javascript - 如何在 express.js 中呈现 redis 记录?

javascript - JQuery: Tabs - 你怎么知道一个选项卡被点击了?