Я создал расширение Google Chrome, которое извлекает бизнес-информацию со страницы сведений о бизнесе и извлекает городские, государственные и почтовые коды, используя бизнес-адрес с помощью геокодирования Google API. Я хранения ценностей города, штата и пин-код с помощью localStorage
, как показано ниже:localStorage не работает, если страница уже открыта
var city = "", state = "", pin = "";
var url = "https://maps.googleapis.com/maps/api/geocode/json?address="+encodeURIComponent(laddress[1].replace(/<.*?>/g,'').replace('&','&').trim())+"&sensor=false&key=AIzaSyCAQmrAKh0jzNVcT1VqTUhjB5Oh_dxl1zA";
console.log(url);
var xhr = new XMLHttpRequest();
var resp;
xhr.open("GET", url, true);
xhr.setRequestHeader("Content-Type", "*/*");
xhr.onload = function() {
var json = xhr.responseText; // Response
json = json.replace(/^[^(]*\(([\S\s]+)\);?$/, '$1'); // Turn JSONP in JSON
json = JSON.parse(json);
console.log(json.results[0].address_components);
for(var i=0;i<json.results[0].address_components.length;i++){
if(json.results[0].address_components[i].types[0]=="administrative_area_level_2")
city = json.results[0].address_components[i].long_name;
if(json.results[0].address_components[i].types[0]=="administrative_area_level_1")
state = json.results[0].address_components[i].long_name;
if(json.results[0].address_components[i].types[0]=="postal_code")
pin = json.results[0].address_components[i].long_name;
}
localStorage.setItem("city", city);
localStorage.setItem("state", state);
localStorage.setItem("pin", pin);
}
xhr.send();
lcity = localStorage.getItem("city");
lstate = localStorage.getItem("state");
lpin = localStorage.getItem("pin");
Проблемы возникают, когда
- бизнес страница уже открыта, и я пытаюсь нажать на расширение, LocalStorage не будет работа
- иногда, это не показывает никакого значения, иногда оно показывает значения.
Что делать, чтобы получить идеальные значения в localStorage
при доступе к нескольким бизнес-страницам?
Ваша ситуация эквивалентна https://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call - вы пытаетесь использовать значение до его установки. – Xan