从我的域中获取 Flash 共享对象

Get flash shared object from my domain

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

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

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

例如:

域名.com/my/path/writer1.swf

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

域名.com/my/other/writer2.swf

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

域名.com/other/thing/writer3.swf

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

域名.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();
}

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