javascript - 调用FlashExternalInterface方法时出现疯狂 "unexpected token illegal"错误

标签 javascript syntax-error actionscript-2

我有一个 SWF,其中包含一些通过ExternalInterface 定义的可公开访问的方法。有些方法允许用户更改 SWF 中的文本和图像。另一种方法获取 SWF 的“快照”——它根据当前可见的内容生成 JPG 图像,然后调用 JavaScript 中的全局函数,并将快照的二进制数据作为函数的参数。数据不是base64或任何其他格式;它只是作为字符串的原始字节。

function updateSwfElement(elementID, val) {
  document.getElementById("theSwf").updateElement(elementID, val);
}
function takeSnapshot() {
  document.getElementById("theSwf").takeSnapshot(); // returns undefined
}
function snapshotComplete(data) {
  // this function is called asynchronously by Flash after takeSnapshot() 
  // has completed.
  // "data" contains the image's bytes. typeof(data) === "string" .
  doSomethingWithTheData(data);
}

现在事实证明,对于一组非常特定的 updateElement() 调用,调用“takeSnapshot()”将抛出可怕的 SyntaxError: Unexpected token ILLEGAL 消息。 snapshotComplete 内设置的断点不会触发。

请注意,这与其他人遇到的问题不同,即“gremlin”进入其源代码(从 JSFiddle 或其他内容复制/粘贴),从而导致语法错误。源文件没有任何问题。不知何故,在 SWF 上调用此方法会使 JS 阻塞。

我的直觉是,尝试将原始字节硬塞到字符串中是一个坏主意,并且我已指示 SWF 作者对输出进行 Base64 编码。但我想不出一个好的方法来证明我是对的。

您认为这里发生了什么?测试它的好方法是什么?

最佳答案

如果您不是 swf 文件的作者,您可以编写自己的 swf 包装器并从此包装器 swf 调用方法,然后转换为 base64 并返回 javascript。是的,这有点棘手:)

关于javascript - 调用FlashExternalInterface方法时出现疯狂 "unexpected token illegal"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616594/

相关文章:

javascript - 如何在 Meteor 应用程序中获取上传文件的内容?

ruby - 在 Ruby 中,如何检查方法 "foo=()"是否已定义?

batch-file - windows ".lnk"快捷键和批处理不混用

jquery - 在actionscript 2.0上运行Jquery函数

javascript - Angular1.6工厂

javascript - WebRTC 传输高音频流采样率

javascript - HTML/JS : Delete a form?

python - 为什么我在 Python 解释器中收到 SyntaxError?

flash: loadSound加载完成后,歌曲从头开始播放

actionscript-3 - AS2 按钮到 AS3