Проблема остановки CORB от блокирования запросов - PullRequest
0 голосов
/ 23 мая 2019

У меня есть расширение Chrome, которое очищает некоторые значения с веб-страницы на основе некоторых селекторов запросов, предоставляемых через вызов API.

Соответствующая часть файла manifest.json:

"background": {
    "scripts": ["js/background.js"],
    "persistent": false
  },
  "content_scripts": [
      {
          "matches": ["<all_urls>"],
          "js": ["js/jquery.min.js"]
      }
  ],
  "permissions": [
    "<all_urls>",
    "storage",
    "activeTab"
  ]
}

JS / background.js: Идея заключается в том, что если пользователь ввел значение atsmap на своей странице параметров, мы должны выполнить вызов API.

chrome.storage.sync.get(['atsmap'], function(result) {
if (result.atsmap) {
        var url = "https://myurl.com/AtsMapping.aspx?AtsCode=" +
        encodeURIComponent(result.atsmap)
        fetch(url).then(r => r.text()).then(text => { 
             console.log(text);
            response = JSON.stringify(text);
            chrome.storage.sync.set({"fieldmapping": response}, function() {
          console.log('Fieldmapping is set to ' + response);
        });

           })
}
      return true;
    });

Эта часть работает нормально, вот консоль с фоновой страницы: enter image description here

В popup.js (который находится внизу popup.html) я вызываю скрипт inject.js после загрузки DOM:

// DOM Ready
$(() => {

  'use strict';

  chrome.tabs.executeScript({file: 'js/inject.js'}, () => {
    // We don't need to inject code everwhere
    // for example on chrome:// URIs so we just
    // catch the error and log it as a warning.
    if (chrome.runtime.lastError) {
      console.warn(chrome.runtime.lastError.message);
    }
  });

  // injected code will send an event with the parsed data
  chrome.runtime.onMessage.addListener(handleInjectResults);

});

И, наконец, в js / inject.js я получаю значение отображения поля из хранилища и пытаюсь его использовать:

(function () {


  'use strict';

   let fieldmap;
   let message;
console.log("test");

chrome.storage.sync.get(['atsmap'], function(result) {
if (result.atsmap) {
    chrome.storage.sync.get(['fieldmapping'], function(result) {
        console.log('Value currently is ' + result.fieldmapping);
        fieldmap = JSON.parse(result.fieldmapping);
        console.log(fieldmap);
    // <key> : {              // ID of input on popup.js
    //   selector: <selector> // DOM selector of value in page
    //   value: <value>       // value to use in popup.js
    // }


    if(fieldmap.AtsMapping[4].atsMapNotes == 'John Smith (2)')  {  
    message = {
      txtLName: {
        selector: fieldmap.AtsMapping[6].lastName,
        value: null
      },

Когда я перехожу на демонстрационную страницу, которую я настроил для очистки, затем щелкаю по значку моего расширения, вместо того, чтобы очищать страницу для значений формы, я получаю в консоли следующее: enter image description here

Я не понимаю, как в строке 32 inject.js я могу console.log(fieldmap); и получить то, что кажется правильным ответом, и все же в строке 39 inject.js та же карта полей не определена.

Любые предложения будут полезны, так как я полностью потерялся здесь.

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