Проблемы с расширением Firefox/Chrome, Uncaught ReferenceError: jsonp_callback__ не определен

У меня возникают проблемы с этим скриптом, когда я пытаюсь создать расширение Firefox / Chrome, он всегда выдает мне эту ошибку Uncaught ReferenceError: jsonp_callback__ is not defined

Использование TamperMonkey / GreaseMonkey работает нормально.

Похоже, проблема в функции jsonp, но мне кажется, что это нормально

Вот сценарий

      'use strict';

const GeoMap = {
  coords: [],
  current_resouce: '',
  __init: function () {
    // Force Resource Buffer to 300
    performance.setResourceTimingBufferSize(300);
    // Do an initial capture then recursively repeat the action every 5 seconds
    this.captureNetworkRequest();

    this.registerEventListener();
  },
  registerEventListener: function () {
    document.addEventListener('keydown', (evt) => {
      if (evt.ctrlKey && evt.shiftKey && evt.keyCode == 8) {
        this.captureNetworkRequest();
        this.jsonp(this.current_resouce)
          .then((d) => {
            this.setLocationArray(d); 
            this.requestReloadOnFail();
            this.openMap();
          })
          .catch((e) => {
            this.requestReloadOnFail();
          });
      }
    });
  },
  captureNetworkRequest: function () {
    performance.getEntriesByType('resource').forEach((current_resource) => {
      if (current_resource.initiatorType == 'xmlhttprequest' || current_resource.initiatorType == 'script' || current_resource.initiatorType == 'img') {
        if (current_resource.name.includes('GeoPhoto') && !current_resource.name.includes('jsonp') && !current_resource.name.includes('_callbacks_')) {
          this.current_resouce = current_resource.name
        }
      }
    });
    performance.clearResourceTimings();
    setTimeout(() => this.captureNetworkRequest(), 5000);
  },
  jsonp: function (uri) {
    return new Promise(function (resolve, reject) {
      var id = '_' + Math.round(10000 * Math.random()),
        callbackName = 'jsonp_callback_' + id,
        src = uri + '&callback=' + callbackName,
        script = document.createElement('script');
      window[callbackName] = function (data) {
        delete window[callbackName];
        var ele = document.getElementById(id);
        ele.parentNode.removeChild(ele);
        resolve(data);
      };
      script.src = src;
      script.id = id;
      script.addEventListener('error', reject);
      (document.getElementsByTagName('head')[0] || document.body || document.documentElement).appendChild(script)
    })
  },
  setLocationArray: function (gmaps = []) {
    var paths = [
      [1, 0, 5, 0, 1, 0],
      [1, 5, 0, 1, 0]
    ],
      tempArray = [],
      found = false;
    paths.forEach(path => {
      if (found) return tempArray;
      tempArray = gmaps;
      for (var i = 0; i < path.length; i++) {
        if (path[i] in tempArray && Array.isArray(tempArray[path[i]])) tempArray = tempArray[path[i]];
        found = (i == path.length - 1 && tempArray.length >= 4);
      }
    });
    try { this.coords = tempArray.slice(2, 4) }
    catch { this.coords = [] }
  },
  requestReloadOnFail: function () {
    if (this.coords.length < 2 && confirm("Could not find any coordinates. Should I force a reload so you can try again?")) {
      window.location.reload(true);
    }
  },
  openMap: function () {
    window.open(`https://www.google.com/maps/search/${this.coords[0]},+${this.coords[1]}`)
  }
};

GeoMap.__init(); 

Вот файл manifest.json, который я использую

      
  "description": "test",
  "manifest_version": 2,
  "name": "Test",
  "version": "1.0",
  "homepage_url": "https://test",
  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["test.js"]
    }
  ],

  "permissions": [
    "<all_urls>",
    "clipboardWrite",
    "cookies",
    "downloads",
    "notifications",
    "storage",
    "tabs",
    "unlimitedStorage",
    "webNavigation",
    "webRequest",
    "webRequestBlocking"
  ]

}

Понятия не имею, как это исправить, я тоже пробовал делать глобальные функции, но не исправил

0 ответов