Если вопрос на самом деле: "Почему из расширения не доступны глобальные переменные и функции?", то ответ - потому что расширения работают через слой безопасности, чтобы тебя случайно не взломали через твоё расширение.
Как добраться до глобальных переменных через этот слой - зависит от конкретного браузера. Читай документацию.
Универсальный подход(при отсутствии CSP) - просто добавить на страницу
script
с нужным содержимым. Примерно так:
function runInScript() {
// здесь везь код, независимый от иных функций
document.loremipsum()
}
document.head.append(
Object.assign(
document.createElement('script'),
{
innerHTML: `(${runInScript.toString()})()`,
onload() { this.remove() }
}
)
);