2011-06-09 124 views
0

我需要一個Javascript或Ajax來加載文件夾中的SWF文件。Javascript動態加載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> 

在頁面加載後如何調用該函數?此代碼是不是爲我工作:(

任何幫助確實

感謝

+0

添加代碼示例...請幫助... – 2011-06-09 03:23:40

+0

查看[setInterval](https://developer.mozilla.org/en/DOM/window.setInterval)。 – jswolf19 2011-06-09 03:56:16

回答

3

至少,你的代碼是不工作,因爲你在這裏有一個語法錯誤 - 你不串聯你的 「我」 的價值:

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或谷歌。