Google chrome extension 如果页面已打开,则localStorage不工作

Google chrome extension 如果页面已打开,则localStorage不工作,google-chrome-extension,local-storage,Google Chrome Extension,Local Storage,我创建了一个Google Chrome扩展,它从企业的详细信息页面获取业务信息,并在Google的地理编码API的帮助下使用企业地址获取城市、州和邮政编码。我使用localStorage存储城市、州和pin的值,如下所示: 变量city=,state=,pin=; 变量url=https://maps.googleapis.com/maps/api/geocode/json?address=+EncodeuriComponentLadAddress[1]。替换//g、.replace'&;

我创建了一个Google Chrome扩展,它从企业的详细信息页面获取业务信息,并在Google的地理编码API的帮助下使用企业地址获取城市、州和邮政编码。我使用localStorage存储城市、州和pin的值,如下所示:

变量city=,state=,pin=; 变量url=https://maps.googleapis.com/maps/api/geocode/json?address=+EncodeuriComponentLadAddress[1]。替换//g、.replace'&;'、'&;'。微调+&传感器=假&键=AIzaSyCAQmrAKh0jzNVcT1VqTUhjB5Oh_dxl1zA; console.logurl; var xhr=新的XMLHttpRequest; var-resp; openGET,url,true; xhr.setRequestHeaderContent-Type,*/*; xhr.onload=函数{ var json=xhr.responseText;//响应 json=json.replace/^[^]*\[\S\S]+\;?$/,“$1”;//在json中打开JSONP json=json.parsejson; console.logjson.results[0]。地址\u组件;
forvar i=0;i我认为您使用了错误的localStorage。虽然localStorage是根据HTML5定义的,但它需要像ww.something.com这样的根上下文

尝试使用

要修改文档中的示例,请使用本地存储

var city = "", state = "", pin = "";
var url = "https://maps.googleapis.com/maps/api/geocode/json?address="+encodeURIComponent(laddress[1].replace(/<.*?>/g,'').replace('&amp;','&').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;
    }
    chrome.storage.local.set({“city”: city,
                    "state”: state,
                    "pin”: pin}, function(){
                    // Do stuff here after set.
                    chrome.storage.local.get(["city", "state", "pin",
                        function(items) {
                            lcity = items.city;
                            lstate = items.state;
                            lpin = items.pin;
                        }
                });
}
xhr.send();
请记住修改清单中的权限以使用存储


一个要点是:xhr.send是一个异步调用。在后面设置l*变量是您在某些时候显示数据时遇到的问题。请在unload或local.set回调中处理此问题。上面的示例在回调中有此设置。

您的情况相当于-您试图在设置值之前使用该值。