0

我使用 swfobject 为 Youtube 视频开发了一个加载器。使用的插件:jQuery 1.6.4 + SWFobject 2.2

在 IE8 上一切正常!它在 script.innerHTML 处崩溃...

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

脚本

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

有任何想法吗 ?谢谢

4

1 回答 1

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,那么有很多示例向您展示如何测试不同的浏览器版本。

于 2012-08-16T05:39:27.113 回答