как выглядит сайт chrome, opera и firefox и вывод консоли: (эти сообщения консоли предназначены только для отладки)
как выглядит сайт chrome
Вывод на консоль от chrome
Теперь сайт на Safari и ошибка, которую он мне выдает:
внешний вид веб-сайт, как вы можете видеть, маркеры не размещаются, потому что код сталкивается с ошибкой
Консоль говорит, что snapshot.val не определен (строка 20)
текст версия ошибки:
Необработанное отклонение обещания: Ошибка типа: undefined не является объектом (оценивается как «snapshot.val») (map. js строка 20)
Фрагмент кода Js это дает мне ошибку:
var map;
var globalmarkers = [];
var globalmarkerC
var marker = {};
var geocoder;
function initMap(){
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 44.854031, lng: -93.460167},
zoom: 13
});
console.log('ok');
var key;
var locationsRef = firebase.database().ref("Locations");
geocoder = new google.maps.Geocoder();
locationsRef.on('child_added', async function(snapshot) {
var data = snapshot.val(); // where the error is happening.
var key = snapshot.key;
console.log(data);
console.log(key);
var ref = firebase.database().ref("LocationsCategory/" + key);
var snapshot = await ref.once('value');
var value = snapshot.val().category;
console.log(value);
var f;
if(value == "TP"){
f = "assets/toilet-paper.png";
}
if(value == "FD"){
f = "assets/food.png";
}
if(value == "WR"){
f = "assets/water.png";
}
if(value == "OR"){
f = "assets/more.png";
}
marker = new google.maps.Marker({ // create a marker and set id
position: {
lat: data.l[0],
lng: data.l[1]
},
map: map,
key_id : key,
icon: f
});
globalmarkers.push(marker);
});
locationsRef.on('child_removed', function(snapshot) {
var data = snapshot.val();
var key = snapshot.key;
console.log(data);
var x;
for(x in globalmarkers){
if(globalmarkers[x].key_id == key){
globalmarkers[x].setMap(null);
console.log('removed')
}
};
});
locationsRef.on('child_changed', function(snapshot) {
var data = snapshot.val();
var key = snapshot.key;
console.log(data);
var x;
for(x in globalmarkers){
if(globalmarkers[x].key_id == key){
var p = {lat: data.l[0], lng: data.l[1]};
globalmarkers[x].setPosition(p);
}
};
});
housekeeping();
}
Может кто-нибудь сказать мне, почему код работает в Chrome и других браузерах, но не в Safari? Также Как я могу исправить эту проблему.