我正在從javascript到我的swf上的方法進行回調。它在Firefox中工作沒有問題,但在Chrome中傳遞的第二個參數總是被接收爲空?在Chrome中的AS3 javascript回調問題
我調試了我的JavaScript,發現一切工作正常,傳遞給swf的兩個值在swf的回調被創建的位置是正確的。
起初,我認爲這可能是一個跨域問題,但已經裁定,如果是這樣的話,那麼swf上的方法根本就不會被調用。第二個值是圖像的二進制字符串表示形式,並且傳遞的字符串的長度是101601,所以我想知道是否可以限制可傳遞的數據量?第一個參數是代表文件類型的小得多的字符串,並且它總是成功接收。
就像我說的,奇怪的是,它在Firefox中工作得很好嗎?
注意 - 所以我剛剛嘗試了一個更小的圖像(愚蠢的是它沒有發生過,我測試,直到我寫這個),其中字符串長度只有133,它仍然失敗。所以這規定了。
我也檢查了AS3文檔,它似乎沒有提到任何這樣的限制。
使用FileReader類的readAsBinaryString()方法生成字符串。據我所知,這輸出一個UTF 16字符串表示它所接收的二進制文件。雖然我認爲我認爲這不應該成爲問題,因爲它仍然只是一個字符串,編碼只會影響解碼?
的Javascript
var readFile = function(file)
{
var reader = new FileReader();
reader.onloadend = function(evt)
{
alert(reader.result.length);//this outputs the correct length
alert(reader.result); //this outputs the binary encoded as a String
swf.addImage(file.type, reader.result);
}
reader.readAsBinaryString(file);
}
AS3
ExternalInterface.addCallback("addImage", addImageHandler);
和
private function addImageHandler(type:String, file:String):void
{
trace("type: ", type);//this traces the type correctly
trace("file: ", file);//this traces out null in chrome, but traces the binary string in firefox
}
,如果你有一些代碼,你可能會得到一個答案更快。希望你找到解決方案。 – Bemmu
謝謝,希望這會有所幫助 – barry
我已經回答了下面的問題 – barry