2012-04-05 18 views
0

Ich habe an einem Loader für Youtube Video mit swfobject gearbeitet. Plugin verwendet: jQuery 1.6.4 + SWFobject 2.2IE8 Bug: script innerhtml load

Alles funktioniert super Ausführungen auf IE8! es script.innerHTML abstürzen ...

<div id"youtube"><div id="player"></div></div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

SCRIPT

function loadYoutube(videoID) 
{ 
var script = document.createElement("script"); 
script.type = "text/javascript"; 
document.getElementById("youtube").appendChild(script); 
script.innerHTML = 'var params = { allowScriptAccess: "always", wmode: "transparent", allowfullscreen:"true" }; var atts = { id: "player" }; swfobject.embedSWF("http://www.youtube.com/v/'+videoID+'?enablejsapi=1&playerapiid=ytplayer&version=3", "player", "870", "550", "8", "flash/expressInstall.swf", null, params, atts);'; 
} 
loadYoutube('BoEKWtgJQAU')​​​;​ 

Irgendwelche Ideen? Danke

Antwort

1

IE8 (und IE7 glaube ich) hat ein Problem mit innerHTML und wird abstürzen, wenn Sie versuchen, es auf diese Weise zu verwenden. Ich hatte ein ähnliches Problem und löste es mit .text anstelle von .innerHTML.

Da dies nur ein IE8/IE7-Problem ist, sollten Sie eine Logik zum Testen für IE8/IE7 verwenden und .text anstelle von .innerHTML verwenden. Ich war mit jQuery so in der Lage war, wie dies für IE8 zu testen:

if ($.browser.msie && parseInt($.browser.version, 10) === 8) { 
    script.text = 'var params = { allowScriptAccess: "always", wmode: "transparent", allowfullscreen:"true" }; var atts = { id: "player" }; swfobject.embedSWF("http://www.youtube.com/v/'+videoID+'?enablejsapi=1&playerapiid=ytplayer&version=3", "player", "870", "550", "8", "flash/expressInstall.swf", null, params, atts);'; 
} else { 
    script.innerHTML = 'var params = { allowScriptAccess: "always", wmode: "transparent", allowfullscreen:"true" }; var atts = { id: "player" }; swfobject.embedSWF("http://www.youtube.com/v/'+videoID+'?enablejsapi=1&playerapiid=ytplayer&version=3", "player", "870", "550", "8", "flash/expressInstall.swf", null, params, atts);'; 
} 

Wenn Sie nicht jQuery verwenden, gibt es viele Beispiele gibt, die Ihnen zeigen, wie für verschiedene Browser-Versionen zu testen.