javascript与swf交互域问题

Javascript和swf在网页中交互一般可有以下几种情况:

1.swf和这些调用的javascript在同域

2.swf和这些调用的javascript在不同域,比如加载远程的swf然后call别地方的服务

对于swf跨域call服务的问题,可同过crossdomain.xml配置解决。

但对于加载远程的swf,默认情况下,根本不能将里面的方法成功注册为向javascript公开的方法,一般会报此类错误:

a) SecurityError: Error #2060: 安全沙箱冲突:ExternalInterface ,调用者 remote.com/test.swf(所加载的远程swf) 不能访问 127.0.0.1(本机的一个服务)

at flash.external::ExternalInterface$/_initJS()
at flash.external::ExternalInterface$/addCallback()

   ...

b) 错误: uncaught exception: Error calling method on NPObject! [plugin exception: Error in Actionscript. Use a try/catch block to find error.]

解决办法

对于a错误,是因为远程的swf加载到本地后没有权限去访问当前html文档,对于这个我们只需要在输出swf的时候设置 allowScriptAccess 属性,一般设置为always.即可解决。

对于b错误,是因为默认actionscript中不允许向将方法注册到不同域的 html文档中, 对于这个我们只需要在as中加一下代码即可解决:

import flash.system.Security;

Security.allowDomain("*");
Security.allowInsecureDomain("*");

 

文章转载自: hi.baidu.com/mebeta/blog/item/cc81b7dfb790461b49540330.html/cmtid/57ea9031b986c315eac4af6f

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值