Após muita pesquisa, resolvo esse problema com a dica da resposta ofir_aghai sobre o evento de carregamento de script.
Basicamente, precisamos usar o $
código jQuery, mas não podemos usá-lo até que o jQuery seja carregado. Eu costumava document.createElement()
adicionar um script para jQuery, mas o problema é que leva tempo para carregar enquanto a próxima instrução em JavaScript usando $
falha. Então, eu usei a solução abaixo.
myscript.js está tendo um código que usa jQuery
main.js é usado para carregar os arquivos jquery.min.js e myscript.js, certificando-se de que o jQuery esteja carregado.
código main.js.
window.load = loadJQueryFile();
var heads = document.getElementsByTagName('head');
function loadJQueryFile(){
var jqueryScript=document.createElement('script');
jqueryScript.setAttribute("type","text/javascript");
jqueryScript.setAttribute("src", "/js/jquery.min.js");
jqueryScript.onreadystatechange = handler;
jqueryScript.onload = handler;
heads[0].appendChild(jqueryScript);
}
function handler(){
var myScriptFile=document.createElement('script');
myScriptFile.setAttribute("type","text/javascript");
myScriptFile.setAttribute("src", "myscript.js");
heads[0].appendChild(myScriptFile);
}
Desta forma, funcionou. O uso loadJQueryFile()
do myscript.js não funcionou. Ele passa imediatamente para a próxima instrução que usa $
.