Сохранение данных в локальном хранилище с помощью запроса GET при установке расширения - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь разработать расширение google-chrome, которое требует загрузки данных в формате JSON из файла, который я уже поместил в свою учетную запись Github. Эти данные должны быть установлены один раз, при установке расширения или после его первого открытия. Однако я не могу этого сделать.

Я пытался использовать window.onInstalled , но это не работает. Вот фрагмент из файла popup.js:

for(let i=0;i<tags.length;i++){
         chrome.storage.local.get(tags[i],function(data){
           console.log(data);
           if (typeof data[tags[i]] == 'undefined'){
              alert(tags[i] + " Data Not Found");
              if(navigator.onLine){
                  alert("Downloading Data from External Source... May take a while");
                  $.ajax({
                      type: 'GET',
                      url: urls[i],
                      data: { get_param: 'value'},
                      dataType: 'json',
                      complete: function(data){
                          alert("Download Complete");
                          htmljson = data.responseJSON;
                          var len = Object.keys(htmljson).length;
                          let key = tags[i];
                          chrome.storage.local.set({key:htmljson},function(){
                        });
                      }
                    });
                  }
              else{
                alert("Connection Could not Established. Check your Internet Connection!");
              }
           }
           else{
            console.log("Data Not Found");
           }
          });
}

Теги - это просто массив, в котором есть значение ключа, с которым я хочу отобразить данные в локальном хранилище. Этот код также иногда приводит к загрузке данных несколько раз, прежде чем он начнет работать нормально. Я пытался найти решение в интернете, но не смог найти ничего полезного. Любая помощь или предложение хорошо в отношении того, как я мог бы достичь этого. Если мой метод неверен, подскажите, пожалуйста, как мне его обойти?

1 Ответ

0 голосов
/ 27 октября 2019

вы не можете / не должны делать это с popup.js. вместо этого сделайте это с фоновой страницы, используя chrome.runtime.onInstalled API. Тогда вы можете popup.js посмотреть на данные, которые есть у вас сегодня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...