4

这就是我所做的:在“本地存储”对话框中,我将指针设置为“无”以允许 0 kB。然后我运行我的代码。我得到带有 [Allow] 和 [Deny] 按钮的“本地存储”对话框。我点击[拒绝]

我得到的输出是

2. we are here now
3. adding a handler to the SharedObject

注意:不会调用 onFlushStatus 事件处理程序。

我重复上述内容,但现在单击[允许]。我得到的输出是一样的:

2. we are here now
3. adding a handler to the SharedObject

注意:不会调用 onFlushStatus 事件处理程序。

我使用的是这里的代码 Flex:如何检测用户是否阻止共享对象写入

无论我尝试什么(并且尝试了很多),事件处理程序都不会在单击 [Allow] 或 [Deny] 按钮时被调用。但我想知道用户点击了哪个按钮。

var so: SharedObject = null;
var flushStatus: String = null;

so = SharedObject.getLocal('mySpace');
try {
  flushStatus = so.flush();
} catch (error: Error) {
  trace('1. could not write SharedObject to disk');
}           
trace('2. we are here now');
if (flushStatus == flash.net.SharedObjectFlushStatus.PENDING) {
  trace('3. adding a handler to the SharedObject');
  so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
} 

public function onFlushStatus(event: NetStatusEvent): void
{
  trace('4. in event handler');
}      

正如建议的那样,我在调用 flush() 之前更改了代码并添加了事件侦听器。然后我再次运行我的测试。不幸的是,我的 onFlushStatus() 没有被调用。

var so: SharedObject = null;
var flushStatus: String = null;

so = SharedObject.getLocal('mySpace');
trace('0. adding a handler to the SharedObject');
so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
flushStatus = so.flush();
trace('2. we are here now');

public function onFlushStatus(event: NetStatusEvent): void
{
  trace('4. in event handler');
}      

我得到的输出 [拒绝]

0. adding a handler to the SharedObject
2. we are here now

我得到的输出 [允许]

0. adding a handler to the SharedObject
2. we are here now

不调用 onFlushStatus()。

4

1 回答 1

0

这个链接看来,它so.flush正在返回String带有命令结果的a flush()。与其寻找要触发的事件,不如查看返回值。如果是,pending则添加您的事件侦听器并检查成功/失败。

一个很好的例子:这里

于 2013-03-20T14:34:08.523 回答