У меня также были проблемы с script.onload = runFunction;в IE8.
я пробовал jQuery.getScript, и он отлично работал для моих нужд.Единственным недостатком является необходимость загрузки jQuery перед добавлением в скрипт.
Однако, так как мои функции обратного вызова в любом случае очень сильно используют jQuery, я нахожу это чрезвычайно приемлемым и очень незначительным недостатком, поскольку он создает очень простое в использовании кросс-браузерное решение.
Обновление:
Вот способ сделать это без использования jQuery:
(модифицированное решение из: 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);