2012-04-05 77 views
0

我已经在使用swfobject的Youtube视频的加载器。 使用的插件:jQuery 1.6.4 + SWFobject 2.2IE8的错误:脚本innerhtml加载

一切都很好的工作在IE8上!它崩溃的script.innerHTML ...

<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')​​​;​ 

任何想法? 谢谢

回答

1

IE8(和IE7我相信)有一个innerHTML的问题,并会崩溃,如果你尝试以这种方式使用它。我有一个类似的问题,并通过使用.text而不是.innerHTML来解决它。

因为这只是一个IE8/IE7问题,所以应该放入一些逻辑来测试IE8/IE7并使用.text代替.innerHTML。我使用jQuery所以能够测试IE8这样的:

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);'; 
} 

如果你不使用jQuery,有很多例子,在那里,告诉你如何测试不同的浏览器版本。