AS3 多个警告说 ExternalInterface 使用 JSON 约定转义字符串
AS3 Multiple warnings saying ExternalInterface escapes strings using JSON conventions
Flash CC,目标:Flash Player 17。
第一帧代码:
ExternalInterface.call("test", "\");
测试影片给出控制台警告:
WARNING: For content targeting Flash Player version 14 or higher, ExternalInterface escapes strings using JSON conventions. To maintain compatibility, content published to earlier Flash Player versions continues to use the legacy escaping behavior.
如何摆脱这个警告?
更新:
var a:Object = {test:"\"};
ExternalInterface.call("console.log", a);
此代码运行正确,浏览器控制台显示:
Object {test: "\"}
但为什么我仍然收到此警告?
您可以 "get rid of this warning" 通过对字符串进行编码:
ExternalInterface.call("test", encodeURIComponent("\"));
JS:
function test(encoded) {
var decoded = decodeURIComponent(encoded);
}
编辑: 明确地说,警告仅针对包含某些转义字符(如斜杠)的字符串显示。您不需要对其他数据类型进行编码,例如布尔值、数字、整数等。
虽然这个警告并不是真正的问题,它只是告诉您您正在使用的某些字符的转义方式与以前不同。
回复您的更新
This code works correct, but why I'm still receiving this warning?
是的,就像我说的,它预计可以工作 无需额外编码。该警告并没有告诉您存在问题,它只是警告您某些角色的转义方式与较老玩家目标的转义方式不同(或根本没有)。如果这对您没有任何意义,那么警告对您也没有任何意义。
您的对象示例可以这样编码:
var a:Object = {test:"\"};
ExternalInterface.call("logFromFlash", encodeURIComponent(JSON.stringify(a)));
JS:
function logFromFlash(encoded) {
var object = JSON.parse(decodeURIComponent(encoded));
console.log(object); // Object {test: "\"}
}
或者您可以只对可能包含斜线的特定字符串属性进行编码,如果您有先见之明的话。
同样,所有这些编码和解码是否值得仅仅为了隐藏一个无害的警告?我认为不是,但这取决于你。
Flash CC,目标:Flash Player 17。
第一帧代码:
ExternalInterface.call("test", "\");
测试影片给出控制台警告:
WARNING: For content targeting Flash Player version 14 or higher, ExternalInterface escapes strings using JSON conventions. To maintain compatibility, content published to earlier Flash Player versions continues to use the legacy escaping behavior.
如何摆脱这个警告?
更新:
var a:Object = {test:"\"};
ExternalInterface.call("console.log", a);
此代码运行正确,浏览器控制台显示:
Object {test: "\"}
但为什么我仍然收到此警告?
您可以 "get rid of this warning" 通过对字符串进行编码:
ExternalInterface.call("test", encodeURIComponent("\"));
JS:
function test(encoded) {
var decoded = decodeURIComponent(encoded);
}
编辑: 明确地说,警告仅针对包含某些转义字符(如斜杠)的字符串显示。您不需要对其他数据类型进行编码,例如布尔值、数字、整数等。
虽然这个警告并不是真正的问题,它只是告诉您您正在使用的某些字符的转义方式与以前不同。
回复您的更新
This code works correct, but why I'm still receiving this warning?
是的,就像我说的,它预计可以工作 无需额外编码。该警告并没有告诉您存在问题,它只是警告您某些角色的转义方式与较老玩家目标的转义方式不同(或根本没有)。如果这对您没有任何意义,那么警告对您也没有任何意义。
您的对象示例可以这样编码:
var a:Object = {test:"\"};
ExternalInterface.call("logFromFlash", encodeURIComponent(JSON.stringify(a)));
JS:
function logFromFlash(encoded) {
var object = JSON.parse(decodeURIComponent(encoded));
console.log(object); // Object {test: "\"}
}
或者您可以只对可能包含斜线的特定字符串属性进行编码,如果您有先见之明的话。
同样,所有这些编码和解码是否值得仅仅为了隐藏一个无害的警告?我认为不是,但这取决于你。