用于动态加载SWF的Javascript

时间:2011-06-09 03:09:07

标签: javascript html ajax flash

我需要一个Javascript或Ajax来加载文件夹中的SWF文件。

/swfdir
 |_ test_1.swf
 |_ test_2.swf
 |_ test_3.swf
 .
 .
 .
 |_ test_50.swf

文件夹包含多个swf文件。我想通过替换现有的一个一个一个地加载所有这些。每个闪存应播放10秒,然后必须用下一个swf文件替换。

请给我一个工作片段。

更新

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>SWFObject 2 static publishing example page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            function loadSWFObjects() {
                var i=1;
                for(i=1;i<=50;i++) {
                    document.getElementById("mySWF").innerHTML = 
                        "<object type=\"application/x-shockwave-flash\" data=\"SWFObjects/test_"i".swf\" width=\"300\" height=\"120\">";
                }
            }
        </script>
    </head>
    <body>
        <div>   
            <object id="mySWF" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
                <object type="application/x-shockwave-flash" data="SWFObjects/test_1.swf" width="300" height="120">
            </object>
        </div>
    </body>
</html>

如何在加载页面后调用该函数?此代码对我不起作用:(

确实有任何帮助。

感谢

1 个答案:

答案 0 :(得分:3)

至少,您的代码无效,因为您在这里遇到语法错误 - 您没有连接“i”值:

document.getElementById("mySWF").innerHTML = 
                        "<object type=\"application/x-shockwave-flash\" data=\"SWFObjects/test_"i".swf\" width=\"300\" height=\"120\">";

应该是这样的:

.../test_" + i + ".swf...

根据您的要求,您可以更好地使用Flowplayer之类的东西。如果你只是使用javascript,你可以做的就像setInterval(),javascript将不知道swf的状态 - 如果有什么东西阻止swf在10秒内播放(或者你设置的间隔为),脚本将加载下一个swf - 非常脆弱的设计。 Flowplayer使用播放列表,您可以在其中定义任意长度的列表,下一个视频只会在前一个视频完成后播放 - 无论需要多长时间。看看this sample。我使用JSON返回可变长度的动态列表。使用您可以使用的任何服务器端语言来检查文件系统并返回文件名列表。

如果您根本无法使用Flowplayer,请注意HTML对象语法因浏览器/版本而异。我看到你正在加载swfobject.js,但你没有使用任何swfobject功能。为什么?看看swfojbect javascript API

也就是说,以下脚本将处理间隔功能:

var loadSWFObjects = function() {
    var i = 1;
    var sInt = setInterval(function() {
        if(i >= 50) {
            clearInterval(sInt);
        }else{
            i++;
        }
        document.getElementById("mySWF").innerHTML = "<object type=\"application/x-shockwave-flash\" data=\"SWFObjects/test_" + i + ".swf\" width=\"300\" height=\"120\">";
    }, 10000);
}

如果您希望在页面加载时发生这种情况,请执行此操作:

window.onload = loadSWFObjects;

如果您需要更灵活/更现代的onload处理程序,请尝试this或google。