2011-03-31 50 views
1

我有一個SWF收集用戶在網站上的反饋。所提出的問題以XML形式提供,使用通過嵌入在頁面中的flashvars提供的URL。不幸的是,這在我的SWF的最新版本中似乎已經打破。無法提取SWF中的flashvars

這裏是我很嵌入對象:

<script src="swfobject.js"></script> 
    <script type="text/javascript"> 
     swfobject.embedSWF("http://localhost/mysite/q.swf", "flashcontent", "900", "360", "9.0.0", "http://localhost/mysite/expressInstall.swf", { loadurl: escape("http://localhost/mysite/q.php?q=13") }, {}, {}); 
    </script> 
    </head> 
    <body> 
    <div id="flashcontent"> 

    </div> 
    </body> 

我試圖拔出使用loadURL Flash變數是這樣的:

this.loaderInfo.addEventListener(Event.COMPLETE, function(e:Event) { 
            init(); 
           }); 
function init() 
{ 
    *snip* 
    loadurl = unescape((loaderInfo.parameters.loadurl)); 
} 

使用ExternalInterface.call()調用console.log在瀏覽器中輸出空,但在以前的版本(這裏代碼保持不變),它的工作原理和輸出的URL,如我所料。我可以在它們之間切換,看看它在更早的工作,然後更新到新的,它再次輸出空。

這個新版本的資產的唯一變化是我添加了一個符號和一些代碼,以便在XML加載後將其添加到舞臺上 - 但這並沒有以任何方式改變獲取該代碼的代碼網頁HTML中的網址。

我正在使用Flash CS5,它是一個ActionScript 3.0項目。

任何人都可以提出我要去哪裏錯了嗎?我花了很多時間把我的頭髮拉出來,所以任何幫助都將不勝感激。我確實在某處讀過這個可以通過ExternalInterface完成的工作 - 對於這樣的場景會更合適嗎?如果由於某種原因,我無法正常工作,這是否可行?

謝謝!

+1

有一個swfobject版本在某些瀏覽器中打破了flashvars,所以一定要更新到最新的...除此之外,我沒有看到任何奇怪的東西。 – Cay 2011-03-31 23:22:56

+0

@Cay - 我做了仔細檢查,並升級到今晚最新的,感謝您的意見。爲了讓它爲我的客戶端工作,我只用ExternalInterface來調用一個返回URL的JS函數。有點黑客,但它會做。 – mdm 2011-03-31 23:44:12

+1

也許是一個範圍問題?你嘗試使用「this」loadurl = unescape((this.loaderInfo.parameters.loadurl)); – 2011-04-01 00:05:11

回答

0

這裏的解決方法是最終使用ExternalInterface.call。不幸的是,我無法弄清楚爲什麼沒有正確傳遞給SWF的flashvars,儘管與HTML,SWFObject等有很大關係。

0

如果您正在使用ExternalInterface.call()撥打電話console.log,它的工作,但現在正在返回null,那麼也許console.log的位置已經移動?

+0

不,我有一種感覺會導致在我的ActionScript代碼中拋出異常,並且會引起注意。嚴格地說,我調用了ExternalInterface.call(「console.log」,「URL:」+ loadurl);'*和* that *顯示爲「URL:null」。 (還是)感謝你的建議。 – mdm 2011-04-01 16:46:43