Ho anche avuto problemi con script.onload = runFunction; in IE8.
Ho provato jQuery.getScript e ha funzionato perfettamente per le mie esigenze. L'unico lato negativo è dover aspettare il caricamento di jQuery prima di aggiungere lo script.
Tuttavia, dal momento che le mie funzioni di callback utilizzano jQuery in modo molto pesante, tuttavia, ritengo che questo sia un aspetto estremamente accettabile e molto minore in quanto crea una soluzione cross-browser di facile utilizzo.
Aggiornamento:
Ecco un modo per farlo senza l'utilizzo di jQuery:
(una soluzione modificata da: 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);
onload non è supportato in IE8 e al di sotto. Funziona in modalità standard IE9. – EricLaw
@EricLaw Non sono sicuro di cosa intendi, window.attachEvent ('onload', fn); ha funzionato per me finora (IE 8). Viene anche menzionato su [MSDN] (http://msdn.microsoft.com/en-us/library/cc197055 (v = vs.85) .aspx) –
@NikitaRybak Sto anche cercando di implementare un modo per caricare jquery in uno script (se non già caricato) e quindi chiama una funzione quando viene caricata. Non c'è "onload" per gli script, ad esempio, sfortunatamente. Hai trovato un modo per farlo? – Etherealone