用于动态加载 SWF 的 Javascript

标签 javascript html ajax flash

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

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

一个文件夹有许多 swf 文件。我想通过替换现有的来一一加载所有这些。每个 Flash 应播放 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>

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

确实有任何帮助。

谢谢

最佳答案

至少,您的代码无法工作,因为这里有语法错误 - 您没有连接“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;

如果您需要更灵活/现代的加载处理程序,请尝试 this或谷歌。

关于用于动态加载 SWF 的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287705/

相关文章:

JQuery/Ajax POST 调用,不支持的媒体类型

php - mod_rewrite 不适用于 jQuery.ajax

javascript - 如何使用 jqGrid 将结果集合显示到网格单元格

javascript - 如何调整 Mongoose 预保存密码哈希以符合 Google Javascript 风格指南第 5.9 节?

html - Flexbox - 证明内容 : center and align-items: center not working?

html - 使用 fancybox 效果向缩略图添加不透明悬停效果

javascript - Tizen gear 2 网络请求

javascript - angularjs/javascript - 在未应用的图像上向左滚动

javascript - 匹配包含特定字符串的任何单词

jquery - 在带有图标的图像上创建悬停状态