2011-06-21 52 views
0

我無法使swfobject嵌入文件與我的html進行通信。當我嵌入swfs使用AC_RunActiveContent的標準方式,它的作品,任何想法,爲什麼這將是?基本上,底部的導航按鈕可以阻止swfs在點擊時播放。我非常感謝任何幫助!swfobject不與html進行通信

<script type="text/javascript" src="js/swfobject.js"></script> 

<script type="text/javascript"> 
var flashvars = {}; 
var params = {}; 
params.play = "true"; 
params.loop = "false"; 
params.menu = "true"; 
params.quality = "high"; 
params.scale = "showall"; 
params.wmode = "opaque"; 
params.bgcolor = "#ffffff"; 
params.devicefont = "false"; 
params.allowscriptaccess = "always"; 

var attributes = {}; 
swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", flashvars, params, attributes); 
</script> 


<script language="javascript"> 
function getFlashMovie(movieName) { 
var isIE = navigator.appName.indexOf("Microsoft") != -1; 
return (isIE) ? window[movieName] : document[movieName]; 
} 

function stopFlash(){ 
    getFlashMovie("blank1").commandFlash(); 
    getFlashMovie("blank2").commandFlash(); 
    getFlashMovie("blank3").commandFlash(); 
} 

HTML:

<div> 
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="747" height="420"> 
    <param name="movie" value="images/blank1.swf" /> 
    <!--[if !IE]>--> 
    <object type="application/x-shockwave-flash" data="images/blank1.swf" width="747" height="420"> 
    <!--<![endif]--> 
    <img src="images/blank1.jpg" alt="" width="747px" height="420px" /> 
    <!--[if !IE]>--> 
    </object> 
    <!--<![endif]--> 
    </object> 
</div> 

<div id="navigation"> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-previous"></div></a> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-next"></div></a> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-first"></div></a> 
</div> 

感謝您的任何反饋!

回答

1

在你的SWF中,你有沒有導入flash.external.ExternalInterface?

如果沒有,您需要這樣做,然後在您的SWF中公開'commandFlash'方法。您也可能需要在您的網域上允許進行這種溝通。

import flash.external.ExternalInterface; 

System.security.allowDomain('*'); 
var flashAvailable:Boolean = ExternalInterface.available; 

ExternalInterface.addCallback('commandFlash', null, commandFlash); 
function commandFlash(args...){ 
    // 
} 

除了上述內容,也許你的SWF隱藏着display:none;在某個時間點在頁面上,然後透露?這在過去爲Firefox導致了一些奇怪的現象。

(不知道,如果你使用AS2/3在SWF)

+0

嗨Danjah,感謝您的回覆,我使用AS3並在我的swfs中導入了flash.external.ExternalInterface。當我嵌入swf'標準'的方式(使用發佈的代碼)時,swfs'停止'按鈕被點擊,但是當我使用swfobject時,它們不會。 – Dave

+0

當您使用SWF測試coms可用性時返回什麼?或者你甚至不能從SWF中獲取它?找到一個我可以窺視的URL? – danjah

+0

我知道我超出了我的深度! - 還有很多東西需要學習!我不確定什麼coms可用性是(抱歉)。我確實有一個URL,但由於該網站不是我的,我有點不願發佈鏈接。它與AC_RunActiveContent一起工作良好,但是如果最終用戶沒有使用閃光燈,我無法獲得「替換」圖像,因此我認爲我會使用swfobject,這似乎導致了比我最初的問題更多的問題! – Dave

1

你SWFObject的代碼有錯誤:它缺少明確的安裝參數。

swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 

當然,您需要將「expressinstall.swf」替換爲您的expressinstall.swf文件的正確路徑。如果您不想使用快速安裝,請改爲使用false布爾值。

swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", false, flashvars, params, attributes); 
0

排序 - 設法解決(見下文)感謝大家的輸入/支持! 現在唯一的問題是Internet Explorer在啓動stopFlash命令的按鈕上返回一個錯誤「對象不支持此屬性或方法」,但至少它仍然有效。哎呀。

var flashvars = {}; 
var params = {wmode:"opaque", allowscriptaccess:"always" }; 
var attributes = {}; 

swfobject.embedSWF("images/clients/blank1.swf", "blank1", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/clients/blank2.swf", "blank2", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/clients/blank3.swf", "blank3", "747", "420", "9.0.0", false, flashvars, params, attributes); 


function getFlashMovie(movieName) { 
var isIE = navigator.appName.indexOf("Microsoft") != -1; 
return (isIE) ? window[movieName] : document[movieName]; 
} 


function stopFlash(){ 
getFlashMovie("blank1").commandFlash(); 
getFlashMovie("blank2").commandFlash(); 
getFlashMovie("blank3").commandFlash(); 
return true; 
}