Javascript 不会使用带有导航地理定位的 jQuery Mobile 加载

Posted

技术标签:

【中文标题】Javascript 不会使用带有导航地理定位的 jQuery Mobile 加载【英文标题】:Javascript won't load using jQuery Mobile with navigation-geolocation 【发布时间】:2013-06-07 20:09:02 【问题描述】:

我在使用 jQuery Mobile、javascript 和获取 geolocaton 时遇到问题。

当我进入页面时,我目前正在使用以下来加载代码:

$(document).on('pageinit', function()

如果用户将可见性设置为可见,则会显示一个 ID 为可见的 div,这是我第一次用来调用地理位置的:

if ($('#visible').length) 
    navigator.geolocation.getCurrentPosition(sucessHandler, errorHandler);

此后,我每 20 秒调用一次地理位置:

setInterval(function() 
    if ($('#visible').length) 
        navigator.geolocation.getCurrentPosition(sucessHandler);
    
, 20000);

我的问题是,如果我离开某个子页面的页面,然后返回此页面,这些代码将不会再次运行。我尝试了以下方法来加载 javascript,而不是 pageinit:

$(document).on('pagebeforeshow', '#index', function()  

$(document).on('pageinit', '#index', function()

我也尝试将它加载到索引正文中。

任何帮助将不胜感激 =)

问候,弗雷德

【问题讨论】:

【参考方案1】:

首先,您可能需要考虑将navigator.geolocation.getCurrentPosition() 替换为navigator.geolocation.watchPosition()。这将在每次设备接收到位置更新时调用您的成功或错误处理函数,而不是您需要每 20 秒 ping 它一次以查看它是否已更改。

关于页面更改,只要您使用的是多页面模板,那么在导航进出任何子页面时都应该调用处理函数。

Here’s a JS fiddle illustrating this

希望这会有所帮助!

【讨论】:

以上是关于Javascript 不会使用带有导航地理定位的 jQuery Mobile 加载的主要内容,如果未能解决你的问题,请参考以下文章

如何每分钟重新加载地理定位 Javascript?

带有地理围栏的 html5 地理定位 API

带有地理位置网站的 Flutter iOS webview 应用程序不会询问位置权限,即使 info.plist 已调整

如果用户未回答 JavaScript 地理定位小狗,如何继续执行代码?

Twitter4j v2.2.6 带有地理定位的流式 API

为啥我的 https 源没有使用导航器地理定位服务的权限?