Подключение скрипта к странице

338
20 декабря 2016, 22:06

В расширении для 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 событие, а какое то другое?

Answer 1

Фактически, я сказал абсолютно тоже самое - в 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();
....
READ ALSO
Как происходит запись в середину файла?

Как происходит запись в середину файла?

Верно ли, что нельзя дописать что-то не в конец файла, не перезаписав файл? Как поступают, например, стандартные парсилки/редакторы XML (в любом...

340
HTML to jQuery objects (Кодогенератор)

HTML to jQuery objects (Кодогенератор)

Есть инструмент перевода верстки в формат создания через jQuery ? Предположим у нас есть блок

315