无法阻止CORB阻止请求

时间:2019-05-23 18:38:33

标签: javascript google-chrome-extension

我有一个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的底部)中,在加载DOM之后,我调用了inject.js脚本:

// 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中,我从存储中获取了fieldmapping的值并尝试使用它:

(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

我不明白如何在inject.js第32行上console.log(fieldmap);并获得似乎正确的响应,但是在inject.js第39行上,未定义相同的字段图。 / p>

任何建议都是有帮助的,因为我在这里完全迷路了。

0 个答案:

没有答案