También tuve problemas con script.onload = runFunction; en IE8.
Intenté jQuery.getScript y funcionó perfectamente para mis necesidades. El único inconveniente es tener que esperar a que se cargue jQuery antes de agregar el script.
Sin embargo, dado que mis funciones de devolución de llamada utilizan jQuery en gran medida de todos modos, considero que esto es una desventaja extremadamente aceptable y muy leve ya que crea una solución de navegador cruzada muy fácil de usar.
Actualización:
Esta es una manera de hacerlo sin utilizar jQuery:
(una solución modificada de: https://stackoverflow.com/a/13031185/1339954)
var url = 'http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js';
var headID = document.getElementsByTagName("head")[0];
var script = document.createElement('script');
script.type='text/javascript';
script.src=url;
//for nonIE browsers
script.onload=function(){
addVideo();
}
//for IE Browsers
ieLoadBugFix(script, function(){
addVideo();}
);
function ieLoadBugFix(scriptElement, callback){
if (scriptElement.readyState=='loaded' || scriptElement.readyState=='completed') {
callback();
}else {
setTimeout(function() {ieLoadBugFix(scriptElement, callback); }, 100);
}
}
headID.appendChild(script);
proceso de carga no es compatible con Internet Explorer 8 y por debajo. Funciona en el modo de estándares IE9. – EricLaw
@EricLaw No estoy seguro de lo que quiere decir, window.attachEvent ('onload', fn); me ha funcionado hasta ahora (IE 8). También se menciona en [MSDN] (http://msdn.microsoft.com/en-us/library/cc197055 (v = vs.85) .aspx) –
@NikitaRybak También estoy tratando de implementar una forma de cargar jquery en un script (si aún no está cargado) y luego llama a una función cuando se carga. No hay 'onload' para los scripts, es decir, desafortunadamente. ¿Has encontrado una manera de hacer eso? – Etherealone