Есть приложение для хрома. В нем я добавляю на страницу возможность передавать данные ко мне на сервер с помощью socket.io
На стороне клиента делаю следующее:
Внедряю библиотеку в head
let sioscript = document.createElement('script');
sioscript.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js');
let hh = document.querySelector('head');
hh.appendChild(sioscript);
Далее внедряю функцию коннекта и запускаю её со страницы
function wsoc(){
socket = io.connect('http://blablabla.ru/', {path: '/ws/'});
}
let InjectFunction = function(PageScriptSpace, func) {
PageScriptSpace.innerHTML += func;
}
let RunFunction = function (PageScriptSpace, func_name){
PageScriptSpace.innerHTML += func_name+'();'
}
PageScriptSpace = document.createElement('script');
InjectFunction(PageScriptSpace, wsoc);
RunFunction(PageScriptSpace, 'wsoc');
h = document.querySelector('head');
h.appendChild(PageScriptSpace);
Но при загрузки страницы пишет ошибку "io is not defined".
далее если я в консоли пропишу wsoc() - то всё сработает.
Почему данная ошибка выскакивает, если я изначально добавляю саму библиотеку? Причем ставил брейкпоинт на строке запуска коннекта и смотрел на страницe наличие библиотеки и она уже там была.