最大FlashVars长度IE8?

时间:2011-04-28 16:28:30

标签: flash actionscript-3 internet-explorer flashvars

使用swfobject和IE8时,flashvars字符串是否有某种最大长度?

我通过FlashVars将Facebook会话对象传递给Flash,而在FF和Chrome中,这可以正常工作。在IE浏览器中,似乎只传递了一定数量的数据,并且字符串在任意点被截断。这会导致Flash错误地解析传入数据。

获取会话对象的PHP:

function parse_signed_request($signed_request, $secret) {
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $sig = base64_url_decode($encoded_sig);
    $data = json_decode(base64_url_decode($payload), true);
    return $data;
}

function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_', '+/'));
}

if(isset($_REQUEST['signed_request'])) {
    $session = json_encode(parse_signed_request($_REQUEST['signed_request'],'<<APP SECRET>>'));
} else {
    $session = '';
}

$lang = 'UK';

组装FlashVars:

var flashvars = {
    popUpsAllowed:true,
    deployPath:"<<PATH>>",
    fb_type:"popup", 
    fb_environment:"iframe",
    fb_app_id:"<<APP ID>>",
    fb_redirect:"<<REDIRECT URL>>",
    session:'<?php echo $session; ?>',
    lang:'<?php echo $lang; ?>',
    nobreak:null }

所以现在在IE中运行的Flash试图访问stage.loaderInfo.parameters.session会抛出一个空对象错误,但在FF中工作正常。

我是否不得不通过externalInterface请求会话以避免FlashVars超载?

编辑:因此,将会话var取消并稍后通过ExternalInterface请求它,但我想知道它是IE还是ActiveX插件,这是错误的。

会话数据如下所示(某些数字字符已更改):

{"algorithm":"HMAC-SHA256","expires":1304334000,"issued_at":1304327676,"oauth_token":"100076334000000|0.kNHAz0AST_cq0jo7WLWldQ__.0000.0004334000.1-000000000|UIy7h_0NFYByedFUGDkxOntP8Sg","user":{"country":"gb","locale":"en_GB","age":{"min":21}},"user_id":"000000000"}

Edit2:* 所以我是一个白痴,当你在IE开发工具中查看代码时,它会裁掉负载,但是将元素的内部html复制到文本编辑器中可以让你看到整个事情。所以会话字符串似乎没有被破坏,但它仍然没有正确进入闪存,loaderInfo.parameters.session存在但是为空,并且loaderInfo.parameters.lang未定义。

这是FlashVars的实际浏览器输出:

var flashvars = {
    popUpsAllowed:true,
    deployPath:"http://www.mydomain.com",
    fb_type:"popup",
    fb_environment:"iframe",
    fb_app_id:"00000000000000000000000000000000",
    fb_redirect:"http://apps.facebook.com/myApp/iframe_popup.php",
    session:'{"algorithm":"HMAC-SHA256","expires":1304416800,"issued_at":1304412506,"oauth_token":"000176004606000|2.01KBxkU8muE0AeIQSNlXLg__.3000.1304400800.0-500428000|_KXAwxTxzGSmasOu0KlNFHQ0d7A","user":{"country":"gb","locale":"en_GB","age":{"min":21}},"user_id":"000000000"}',
    lang:'UK',
    nobreak:null}

2 个答案:

答案 0 :(得分:3)

你需要对它进行urlencode。管道和冒号我认为你的问题是什么。 Flashvars在查询字符串上转到swf。 IE开发工具栏正在崩溃,因为它无法渲染管道或冒号。

答案 1 :(得分:2)

所有浏览器都支持长度最大为64KB(65535字节)的字符串大小。必须在OBJECT和EMBED标记中分配FlashVars才能在所有浏览器上运行。在Using FlashVars to pass variables to a SWF查看Adobe对FlashVars的看法。