J'ai également eu des problèmes avec script.onload = runFunction ; dans IE8.
J'ai essayé jQuery.getScript et cela a parfaitement fonctionné pour mes besoins. Le seul inconvénient est de devoir attendre que jQuery soit chargé avant d'ajouter le script.
Cependant, étant donné que mes fonctions de rappel utilisent très largement jQuery, je trouve que c'est un inconvénient extrêmement acceptable et très mineur, car cela crée une solution très facile à utiliser et multi-navigateurs.
Mise à jour :
Voici un moyen de le faire sans utiliser jQuery :
(une solution modifiée 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);