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 に問題があり、この方法で使用しようとするとクラッシュします。同様の問題があり、.innerHTML の代わりに .text を使用して解決しました。

これは IE8/IE7 のみの問題であるため、IE8/IE7 をテストし、.innerHTML の代わりに .text を使用するロジックを組み込む必要があります。私は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 に答える