tabs.executeScript встречает ReferenceError при доступе к функции, определенной в скрипте содержимого

Обновление: Кажется, проблема в том, что Webpack выполняет каждый модуль в своей собственной функции, то есть в глобальной области не может быть никаких модулей. Есть ли какой-нибудь элегантный способ решить эту проблему, чтобы я мог определить функцию в сценарии содержимого, упакованного в Web, и получить к нему доступ из другого сценария содержимого?

Оригинал:

в моем основном скрипте контента я определяю функцию

function foo() {
    console.log("foo")
}

В моем background.jsЯ вставляю новый контентный скрипт так:

browser.tabs.query({currentWindow: true, active: true}).then(res => {
    browser.tabs.executeScript(res.id, {code: "foo()"})
})

В консоли моей вкладки я вижу

VM181:1 Uncaught ReferenceError: foo is not defined
at <anonymous>:1:1

Оба сценария содержимого должны находиться в одной и той же среде выполнения, поэтому я должен иметь возможность совместно использовать функции и переменные в обоих сценариях.

Я недавно добавил Webpack для создания своего расширения Chrome, и я использую Webextension-Polyfill для обещания chrome.* API как browser,

В старой версии моего кода это работало нормально, но теперь это не работает. У меня есть чувство, что это из-за Webextension-Polyfill, но я честен, "не могу понять это.

РЕДАКТИРОВАТЬ:

executeScript код запускается во вкладке. Я могу console.log и это появляется в консоли. Тем не менее, он не имеет доступа к пространству имен моего существующего скрипта контента.

РЕДАКТИРОВАТЬ 2:

Я добавил еще один контент-скрипт с

function foo() {
    console.log("foo")
}

И это доступно из введенного скрипта. Так что я думаю, это как-то связано с Webpack.

Это как-то связано с областью видимости в комплектах Webpack?

0 ответов

Другие вопросы по тегам