我正在从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