参考错误地理位置
Reference error geolocation
我试图在javascript中使用地理定位。然而,在我的控制台上,我看到一个错误是:ReferenceError: success is not defined
。因此,我无法执行我的代码无法执行函数的其余部分。下面是我的实现:
function clicked(){
console.log("inside clicked");
if($("#checkbox-h-2j").prop('checked')){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(success,error);
}
else{
document.getElementById("hello").innerHTML = "Not supported";
}
function success(position){
lat = position.coords.latitude;
lng = position.coords.longitude;
document.getElementById("hello").innerHTML = "lat :"+lat+"<br>long :"+lng;
}
function error(err){
document.getElementById("hello").innerHTML = "Error Code: "+error.code;
if(err.code == 1){
document.getElementById("hello").innerHTML = "Access denied";
}
if(err.code == 2){
document.getElementById("hello").innerHTML = "Position unavailable";
}
}
}}
是否参考错误在第08行,即
navigator.geolocation.getCurrentPosition(success,error);
如果是这样,那么问题可能是当你使用success时,这个函数在被定义之前就被使用了,因此它会停止进一步的执行,在使用它之前尝试定义函数,然后它会工作。
我假设你在Firefox中得到错误,但在Chrome中没有。下面是一个简单的例子:
if (true) {
foo();
function foo() {
console.log('bar');
}
}
问题是您在块中使用了函数声明。实际上是一个语法错误,但是浏览器会选择不同的方式来处理这个问题。
Chrome将提升函数声明(像任何其他函数声明),因此结果是
function foo() {
console.log('bar');
}
if (true) {
foo();
}
。无论条件的结果如何,函数都将始终被定义。
Firefox会将该声明视为函数表达式,而不是像
那样if (true) {
foo();
var foo = function foo() {
console.log('bar');
}
}
在这种情况下,您将尝试在定义函数之前调用它,这当然是行不通的。
注意:这不是Firefox真正的工作方式,因为上面的例子会生成一个类型错误,而不是引用错误,但通常情况下它是这样工作的:
有关此问题的更多信息,请参阅MDN文档。
<
解决方案/strong>:
在块内,总是使用函数表达式,而不是函数声明。函数表达式必须在使用
之前定义。也就是说,你的代码变成了像 这样的东西if($("#checkbox-h-2j").prop('checked')){
var success = function() { ... };
var error = function() { ... };
navigator.geolocation.getCurrentPosition(success,error);
}
相关文章:
- 安卓平台上的QWebView HTML5地理位置
- 传单缩放控制位置错误
- Possibile使用Manifest v2下的HTML5地理位置API将lat/long转换为国家/地区
- 如何在javascript清单中获取地理位置权限
- 地理位置和计算从当前纬度/液化天然气到另一纬度/液化石油气的距离
- 询问用户是否要打开地理位置
- javascript在处理地理位置时会导致错误
- 无法在 Ionic Framework 上使用人行横道获取地理位置(未发现错误)
- 电话差距构建地理位置 NPObject 上的错误调用方法
- 谷歌浏览器中的地理位置错误回调
- 具有超时的地理位置会导致错误处理程序被调用两次
- iOS HTML5 地理位置 - 当浏览器无权使用地理位置时没有错误
- 来自Phonegap的地理位置示例在Android上给出错误的警报
- JQuery - 未捕获的引用错误:未定义地理位置
- 地理位置错误:用户拒绝了安卓地理位置
- W3C地理位置,错误:位置不可用
- HTML5地理位置地址表单填充器未捕获语法错误:意外的标记<
- Chrome中无法使用HTML5地理位置的错误处理
- 参考错误地理位置
- 在谷歌地图上对地理位置进行地理编码会产生错误