Javascript для динамической загрузки SWF - PullRequest
0 голосов
/ 09 июня 2011

Мне нужен Javascript или Ajax для загрузки SWF-файлов в папку.

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

В папке содержится количество SWF-файлов. Я хочу загрузить их все один за другим, заменив существующий. каждая вспышка должна воспроизводиться в течение 10 секунд, затем она должна быть заменена следующим SWF-файлом.

Пожалуйста, предоставьте мне рабочий фрагмент.

UPDATE:

<!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 Ответ

3 голосов
/ 09 июня 2011

Как минимум, ваш код не работает, потому что здесь есть синтаксическая ошибка - вы не объединяете свое значение "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 использует плейлисты, где вы можете определить список любой длины, и следующее видео будет воспроизводиться только после завершения предыдущего - независимо от того, сколько времени это займет.Взгляните на этот образец .Я использую 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 или google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...