2011-08-31 15 views
6

単純な質問は、ユーザーが共有オブジェクトへのデータの書き込みをブロックした場合、どのようにしてactionscriptで検出しますか?フレックス:共有オブジェクトが書き込みからブロックされているかどうかを検出する方法

sharedObj = SharedObject.getLocal("rememberme"); 

これは常に共有オブジェクトを返しますが、共有オブジェクトをブロックしてもサイズは0です。

共有オブジェクトにデータを保存してフラッシュしようとすると、書き込みがブロックされるため、エラーが発生します。では、共有オブジェクトへの書き込みが無効になっているかどうかを確認する正しい方法は何ですか?

Error: Error #2130: Unable to flush SharedObject. 

答えて

10
var my_so:SharedObject = SharedObject.getLocal("mySpace"); 
var flushStatus:String = null; 
try { 
    flushStatus = my_so.flush(); 
} catch (error:Error) { 
    trace("Error...Could not write SharedObject to disk\n"); 
} 
if (flushStatus != null) { 
    switch (flushStatus) { 
     case SharedObjectFlushStatus.PENDING : 
      trace("Requesting permission to save object...\n"); 
      my_so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
      break; 
     case SharedObjectFlushStatus.FLUSHED : 
      trace("Value flushed to disk.\n"); 
      break; 
    } 
} 
function onFlushStatus(event:NetStatusEvent):void { 
    trace("User closed permission dialog...\n"); 
    switch (event.info.code) { 
     case "SharedObject.Flush.Success" : 
      trace("User granted permission -- value saved.\n"); 
      break; 
     case "SharedObject.Flush.Failed" : 
      trace("User denied permission -- value not saved.\n"); 
      break; 
    } 
my_so.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
} 

共有オブジェクトは、それがSharedObjectFlushStatus.PENDINGに行く0の場合uは他のエラーレポートをcatchできるブロックされている場合。

SOURCE

+0

これをありがとう! –

+0

ねえ、これは古い答えですが、私は本質的にこれとまったく同じコードを使用していました。そして、それはonFlushStatusコールバックには何のアイデアも出てこないようです。私のコードはここにあります:https://github.com/nfriedly/Javascript-Flash-Cookies/blob/master/src/Storage.as#L213 –

関連する問題