我在訪問JavaScript中附加到窗口的全局變量時遇到了一些問題。 這是我所使用的腳本標籤嵌在我的索引頁我的代碼片段可以說訪問全局變量的問題
var Geolocation = function() {
var self = this;
self.errors = {
TIMEOUT: 1,
POSITION_UNAVAILABLE: 2,
PERMISSION_DENIED: 3,
UNKNOWN_ERROR: 4
};
self.getCurrentPosition = function(success, error, options) {
// simulate the wait for the user choice
var geoIntervalId = window.setInterval(function() {
if (state != null) {
window.clearInterval(geoIntervalId);
switch(state) {
case 'ok':
success(new Position(latitude, longitude));
break;
case 'timeout': case 'position_unavailable': case 'permission_denied':
error(new GeolocationError(self.errors[state.toUpperCase()]));
break;
default:
error(new GeolocationError(self.errors.UNKNOWN_ERROR));
}
}
}, 100); // ms
};
}
var Position = function(lat, lng) {
this.coords = new Coordinates(lat, lng);
}
var Coordinates = function(lat, lng) {
this.latitude = lat;
this.longitude = lng;
}
var GeolocationError = function(code) {
this.TIMEOUT = 1;
this.POSITION_UNAVAILABLE = 2;
this.PERMISSION_DENIED = 3;
this.UNKNOWN_ERROR = 4;
this.code = code;
}
var state = null,
latitude = null,
longitude = null;
window.geolocation_provider = new Geolocation();
這之後我還包括另一個javascript文件說,在索引文件test.js再次使用的腳本。現在,當我嘗試訪問window.geolocation_provider變量時,它變爲空。爲什麼如此
我的第一個建議是與外部.js文件打交道時,被檢查的執行順序。這是我在處理JS時遇到的一個常見問題。這會導致null頻繁出現。 – MaxSan
值爲空還是未定義?執行順序的問題肯定會導致未定義的值。要驗證問題是否與第二個文件相關,請在調用Geolocation之後放置「alert(window.geolocation_provider)」,然後查看該值是什麼。在test.js文件中,如何引用geiolocation_provider? – HBP