javascript中的全局变量来获取地理位置

Posted

技术标签:

【中文标题】javascript中的全局变量来获取地理位置【英文标题】:global variable in javascript to get Geolocation 【发布时间】:2012-07-23 09:42:27 【问题描述】:

我正在使用以下代码访问黑莓设备的地理位置。它的工作并显示出期望的结果。但我想在这个函数的主体之外访问 window.GlobalVar 。我怎样才能访问它?请帮忙。

 navigator.geolocation.getCurrentPosition(function(position)   
  var gps = (position.coords.latitude+position.coords.longitude);  
  window.GlobalVar = gps;
  alert (window.GlobalVar);
);

最好的问候,

【问题讨论】:

请看***.com/questions/7809690/… 【参考方案1】:

window.GlobalVar 可以在您的函数之外访问。

这里可能出现的问题是您在设置之前尝试访问它,因为它是在回调函数中设置的。

getCurrentPosition 提示用户输入坐标,但它不是阻塞调用,即它不会简单地停止所有代码执行并等待用户做出决定。

这意味着您在页面加载期间设置window.GlobalVar,您在页面加载期间请求它,并且您在用户决定时设置它 。所以无论你在哪里调用getCurrentPosition,你都不能确定在给定的点上,window.GlobalVar 是否会被设置。

如果您想确保在您正在运行的脚本中设置了window.GlobalVar,您需要确保在设置变量之后运行脚本。

navigator.geolocation.getCurrentPosition(function(position)   
  var gps = (position.coords.latitude+position.coords.longitude);  
  window.GlobalVar = gps;

  continueSomeProcess();
);

function continueSomeProcess() 
   // this code will be able to access window.GlobalVar

【讨论】:

我将其设置为 onload,并尝试在页面末尾访问它。 @asifhameed:不,您没有将其设置为 onload,您是在 要求 将其设置为 onload。当你得到它是你无法控制的,如果用户选择不分享它,你可能永远也得不到它。在页面的末尾很可能不会设置它,因为页面末尾的脚本将在站点呈现时立即执行,并且在用户有机会对请求做出反应之前。请参阅我的更新答案。【参考方案2】:

在设置window.gps = gps 后调用window.gps 就足够了,因为它具有全局范围,因为您将它附加到window。注意 JS 是异步的,即 gps 在调用时可能没有定义。

【讨论】:

我正在设置全局变量 onload,并尝试在页面末尾访问它。

以上是关于javascript中的全局变量来获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

javascript

Javascript 和 ESLint 中的全局变量

javascript基础05

javascript基础05

变量的作用域JavaScript 内部函数

JavaScript:在 IE 中列出全局变量