Je suis en train d'essayer de charger dynamiquement un fichier .js externe (selon une entrée que je reçois de l'utilisateur). Actuellement, mon code ressemble à ceci :
function createScript(src, id) {
if (document.getElementById(id) == null) {
var newScript = document.createElement('script');
newScript.setAttribute("type", "text/javascript");
newScript.setAttribute("src", src);
newScript.setAttribute("id", id);
document.getElementsByTagName("head")[0].appendChild(newScript);
}
}
Cela fonctionne. Cela charge le script, mais si j'essaie d'appeler une fonction qui est définie à l'intérieur du nouveau script, cela ne fonctionnera pas. La chose étrange est que si j'attends une seconde (en utilisant un alert("test")
ou quelque chose comme ça), le script fonctionne.
Je suppose que c'est parce que le navigateur ajoute immédiatement la balise </code>, mais il lui faut un peu plus de temps pour "lire" le script à l'intérieur du fichier .js. J'ai essayé de jouer avec <code>"typeof testfunction === 'function'"</code> avec quelques variations mais sans succès.</p> <p>Une bonne manière de faire cela ?</p></x-turndown>