В расширении для google chrome указал скрипт, который выполнится на нужном мне сайте.
Этот скрипт должен подключить к странице другой файл скрипта при помощи вот такой опции в манифесте
"web_accessible_resources": [ "somescript.js" ]
в скрипте этом находится класс. Подключается в итоге скрипт вот так
var functions = document.createElement('script');
functions.onload = function(){
let someObject = new SomeClass(document);
someObject.doAnything();
};
functions.src = chrome.extension.getURL('somescript.js');
functions.type = 'text\/javascript';
document.head.appendChild(functions);
Но это не работает. Когда срабатывает functions.onload, ничего не происходит а в консоль выводится
Uncaught ReferenceError: SomeClass is not defined at HTMLScriptElement.functions.onload
То есть в тот момент, когда выполняется functions.onload, контекст еще ничего не знает про SomeClass. И вот уже после этого я могу написать в консоли
let someObject = new SomeClass(document);
someObject.doAnything();
и все отрабатывает нормально. Может, мне нужно не onload событие, а какое то другое?
Фактически, я сказал абсолютно тоже самое - в onload нет SomeClass потому что ты его добавляешь "после" объявления обработчика... забудь ты про onload для начала. После добавления somescript..js в разметку, someClass должен быть доступен везде. Что по сути ведет к следующему -
....
let functions = document.createElement('script');
functions.src = chrome.extension.getURL('somescript.js');
functions.type = 'text\/javascript';
document.head.appendChild(functions);
// незачем onload если SomeText уже будет доступен после добавления в документ
let someObject = new SomeClass(document);
someObject.doAnything();
....
Продвижение своими сайтами как стратегия роста и независимости