这个跨域的问题有可能在火狐下是不存在的。ie下肯定存在!
a.a.com
b.a.com
flash中认为是不同的两个域;
flash认为子域名不同,就是是不同的域;
本域下flash和网页js的互相调用一直比较正常,今天将flash移到另一个域名下,再用本地js远程加载这个flash,互相调用的时候,发现失败了。初步判断是跨域调用的权限问题。
在FLASH脚本调用处加上参数:<param name="allowScriptAccess" value="always" />
在flash里加上:System.security.allowDomain("*");
问题得以解决。
allowScriptAccess
Flash Player 自版本 6 以来, 一直支持一个称为 allowScriptAccess 的 HTML 参数。
此参数用于控制是否允许 SWF 中的 ActionScript 在包含它的 HTML 页中的 JavaScript进行相互调用。
allowScriptAccess 可能存在如下值:
always: 始终允许 ActionScript 相互调用 JavaScript。无论这个flash是同一个域加载的(./flash.swf),还是跨域加载的(www.B.com/flash.swf)。如果你加载跨域的flash,而且想调用它的方法,必须这么写。
sameDomain: 仅当 SWF 和 HTML 页来自同一域时(./flash.swf), 才允许 ActionScript 和 JavaScript相互调用。跨域加载的(www.B.com/flash.swf)这时候无法相互调用,谁调用谁都不行。这点很重要,例如你维护网站时候,用户链接过来的跨域flash,你不想让它调用或者可能调用你的JS,这时候,这个选项就管用了。
never: 绝对不允许 ActionScript 和 JavaScript 相互调用,无论这个flash是本地域加载还是跨域加载的。
需要单独说明的是, 在 Flash HTML 发布模板中, allowScriptAccess 的默认值始终为“sameDomain”。如果不修改 Flash HTML 发布进程输出, 那么您将会看到“sameDomain”行为, 这是因为 HTML 页会为 Flash Player 指定“sameDomain”。