Es necesario adjuntar un controlador de eventos para el método de proceso de carga, en los navegadores compatibles con los estándares de la Web, o el onreadystatechange, la comprobación de la propiedad script.readyState conseguir igual a "cargado" o "completa" , en Internet Explorer.
Antes de que te notifiquen que la secuencia de comandos se cargó, probablemente estés intentando acceder a objetos, funciones y propiedades que aún no se han declarado o creado.
Aquí es una función de ejemplo, extraído del módulo de bezen.dom.js en mi Javascript library, bezen.org:
var appendScript = function(parent, scriptElt, listener) {
// append a script element as last child in parent and configure
// provided listener function for the script load event
//
// params:
// parent - (DOM element) (!nil) the parent node to append the script to
// scriptElt - (DOM element) (!nil) a new script element
// listener - (function) (!nil) listener function for script load event
//
// Notes:
// - in IE, the load event is simulated by setting an intermediate
// listener to onreadystate which filters events and fires the
// callback just once when the state is "loaded" or "complete"
//
// - Opera supports both readyState and onload, but does not behave in
// the exact same way as IE for readyState, e.g. "loaded" may be
// reached before the script runs.
var safelistener = catchError(listener,'script.onload');
// Opera has readyState too, but does not behave in a consistent way
if (scriptElt.readyState && scriptElt.onload!==null) {
// IE only (onload===undefined) not Opera (onload===null)
scriptElt.onreadystatechange = function() {
if (scriptElt.readyState === "loaded" ||
scriptElt.readyState === "complete") {
// Avoid memory leaks (and duplicate call to callback) in IE
scriptElt.onreadystatechange = null;
safelistener();
}
};
} else {
// other browsers (DOM Level 0)
scriptElt.onload = safelistener;
}
parent.appendChild(scriptElt);
};
para adaptarlo a sus necesidades, puede reemplazar la llamada a catchError, que envuelve al oyente a atrapar y registro de errores y utilizar la función de modificación:
var appendScript = function(parent, scriptElt, listener) {
// append a script element as last child in parent and configure
// provided listener function for the script load event
//
// params:
// parent - (DOM element) (!nil) the parent node to append the script to
// scriptElt - (DOM element) (!nil) a new script element
// listener - (function) (!nil) listener function for script load event
//
// Notes:
// - in IE, the load event is simulated by setting an intermediate
// listener to onreadystate which filters events and fires the
// callback just once when the state is "loaded" or "complete"
//
// - Opera supports both readyState and onload, but does not behave in
// the exact same way as IE for readyState, e.g. "loaded" may be
// reached before the script runs.
var safelistener = function(){
try {
listener();
} catch(e) {
// do something with the error
}
};
// Opera has readyState too, but does not behave in a consistent way
if (scriptElt.readyState && scriptElt.onload!==null) {
// IE only (onload===undefined) not Opera (onload===null)
scriptElt.onreadystatechange = function() {
if (scriptElt.readyState === "loaded" ||
scriptElt.readyState === "complete") {
// Avoid memory leaks (and duplicate call to callback) in IE
scriptElt.onreadystatechange = null;
safelistener();
}
};
} else {
// other browsers (DOM Level 0)
scriptElt.onload = safelistener;
}
parent.appendChild(scriptElt);
};
Comprobar esta respuesta relacionada a cabo: ** [Cargar ordenación de etiquetas de script añadidas dinámicamente] (http://stackoverflow.com/a/38840724/2247494) ** – jherax