ExternalInterface 是 ActionScript 中的一个类,它允许 ActionScript 代码与 JavaScript 代码进行交互。以下是关于 ExternalInterface 的一些常见问题:
常见问题
- 无法通过 ExternalInterface.call传递“\”反斜杠:在尝试通过 ExternalInterface.call 传递包含反斜杠的字符串时,由于反斜杠在字符串中被视为转义字符,可能会导致错误。解决方法是使用双反斜杠
\\
或者使用escapeMessage
函数来转义字符串。 - 跨域问题:当资源文件(如静态组件)和 HTML 文件不在同一个服务器下时,ActionScript 和 JavaScript 跨域通信可能会遇到安全问题。为了解决这个问题,需要在 ActionScript 中设置
Security.allowDomain
和Security.allowInsecureDomain
。 - ExternalInterface 抛出 SecurityError 问题:在 Flash 启动时就调用 ExternalInterface 方法,在浏览器下可能会经常出现 SecurityError 异常,特别是在某些国产浏览器下。解决方法是使用
Security.allowDomain("*")
和Security.allowInsecureDomain("*")
来允许跨域通信,或者为请求加上时间戳以示区别。
解决方法
- 转义反斜杠:使用
\\
或者escapeMessage
函数来转义包含反斜杠的字符串。 - 处理跨域问题:设置
Security.allowDomain
和Security.allowInsecureDomain
来允许跨域通信,或者为请求加上时间戳以示区别。
请注意,由于 ExternalInterface 是 Adobe Flash 的一部分,而 Flash 已经被 Adobe 弃用,因此在实际开发中应避免使用 ExternalInterface,并寻找替代的技术方案。