这就是我所做的:在“本地存储”对话框中,我将指针设置为“无”以允许0 kB。然后我运行我的代码。我得到了“本地存储”对话框,其中包含[允许]和[拒绝]按钮。我点击[拒绝]
我得到的输出是
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: How to detect if user has blocked shared object from writing
无论我尝试什么(我尝试了很多),事件处理程序永远不会在[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()。