使用ExternalInterface时出现错误,如下所示:
警告:对于针对Flash Player版本14或更高版本的内容,ExternalInterface使用JSON约定转义字符串。维护兼容性,发布到早期Flash Player版本的内容继续使用遗留的转义行为。
我应该怎么做才能防止出现警告,我应该使用什么"遗留转义"而不是"JSON约定"?
错误是由于json数据未转义所致。您可以简单地通过转义来防止错误:
ExternalInterface.call(callBackFunction, escape(jsonData));
希望这能有所帮助!
当字符串从运行的SWF发送到包含禁止字符的JavaScript时,调试器控制台中会出现此警告。这也可能影响深度链接是否按预期工作。
ExternalInterface和BrowserManagerAPI都会受到影响。如果单独使用escape()方法不足以消除警告,请尝试:
escape(str).replace(/./g, "%2E").replace(/:/g, "%3A").replace(///g, "%2F");
一般来说,除非你有充分的理由,否则你应该避免使用"遗留"一词
好的理由包括但不限于:
- 在您当前的业务限制范围内,将旧代码从遗留系统中转换出来是不可能的
- 遗留系统包含更新系统未提供的基本特征
遗留系统的问题是公司/开发人员没有义务继续维护它
此特定错误消息意味着:
- 如果您将目标设置为Flash Player 14或更高版本,它将使用符合JSON的转义方法
- 如果这与您的外部代码不兼容,您需要针对Flash Player 13或更低版本
"JSON合规性"或"JSON约定"只是意味着任何JSON专用字符都将被转义,以防止潜在的错误