Miałem również problemy z script.onload = runFunction; w IE8.
Próbowałem jQuery.getScript i działało idealnie dla moich potrzeb. Jedynym minusem jest oczekiwanie na załadowanie jQuery przed dodaniem skryptu.
Jednakże, ponieważ moje funkcje wywołania zwrotnego wykorzystują jQuery bardzo mocno, i tak uważam to za bardzo akceptowalną i bardzo niewielką wadę, ponieważ tworzy bardzo łatwe w użyciu, wieloprzeglądowe rozwiązanie.
Aktualizacja:
Oto sposób to zrobić bez użycia jQuery:
(modyfikowany roztwór z: 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 nie jest obsługiwana w IE8 i niżej. Działa w trybie standardów IE9. – EricLaw
@EricLaw Nie jestem pewien, co masz na myśli, window.attachEvent ("onload", fn); do tej pory pracował dla mnie (IE 8). Jest również wspomniany w [MSDN] (http://msdn.microsoft.com/en-us/library/cc197055 (v = vs.85) .aspx) –
@NikitaRybak Próbuję również zaimplementować sposób ładowania jquery w skrypt (jeśli jeszcze nie został załadowany), a następnie wywołaj funkcję, gdy jest załadowana. Nie ma "onload" dla skryptów w niestety. Czy znalazłeś sposób, aby to zrobić? – Etherealone