从我的域获取Flash共享对象

时间:2016-02-18 17:25:38

标签: javascript actionscript-3 flash cookies

我正在尝试清除我域上托管的SWF的Flash Cookie。是否可以获取此Flash cookie(sharedObject)以便清除它?访问this页面会在网站列表中显示我的域名,但我希望能够从另一个SWF文件中清除这些文件,如果要重置cookie,则会显示该文件。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

您可以使用SharedObject/clear()执行此操作但有一些限制:

  • 清除共享对象的SWF必须与创建共享对象的SWF位于同一个域中。
  • 必须使用两个SWF都可以访问的路径创建共享对象。最简单的方法是使用"/"作为路径,以便域上的所有SWF都可以访问共享对象。默认路径限制只能访问创建共享对象的SWF。
  • 您必须知道所有共享对象的确切名称。换句话说,您无法查询域上的所有共享对象,您必须知道共享对象名称(和路径)。 (当然,您可以在单个已知共享对象中保留自己的共享对象注册表。)

例如:

<强> domain.com/my/path/writer1.swf

var so:SharedObject = SharedObject.getLocal("savedData1", "/");
so.data.something = "Something";

<强> domain.com/my/other/writer2.swf

var so:SharedObject = SharedObject.getLocal("savedData2", "/");
so.data.stuff = "Stuff";

<强> domain.com/other/thing/writer3.swf

var so:SharedObject = SharedObject.getLocal("savedData3", "/");
so.data.thing = "Thing";

<强> domain.com/eraser.swf

SharedObject.getLocal("savedData1", "/").clear();
SharedObject.getLocal("savedData2", "/").clear();
SharedObject.getLocal("savedData3", "/").clear();

var sharedObjectNames:Array = ["savedData1", "savedData2", "savedData3"];
for each(var sharedObjectName:String in sharedObjectNames){
    SharedObject.getLocal(sharedObjectName, "/").clear();
}

请注意,当您使用"/"作为路径时,必须注意不要发生名称冲突。