我正在使用 Native Client 模块为 Chrome 编写一个新的图像格式解码器。
我使用此 list 来创建 Chrome 扩展:
{
"name": "paver-jbig2",
"manifest_version": 2,
"version": "0.1.0",
"minimum_chrome_version": "35",
"web_accessible_resources": [
"paver-jbig2.nmf",
"paver-jbig2_arm.nexe",
"paver-jbig2_x86_32.nexe",
"paver-jbig2_x86_64.nexe"
],
"nacl_modules": [
{
"path": "paver-jbig2.nmf",
"mime_type": "image/jbig2"
}
]
}
当我调用 URL http://my.company.com/myimage.jbig2 时,可以看到nacl模块调用没有错误。
但是当我在 HTML 页面中使用 ajax 调用此 URL 或在 JavaScript 中使用 image.src=“http://.../myimage.jbig2”
调用此 URL 时,NaCl 模块不是已调用。
出了什么问题?
最佳答案
正如我建议的那样here ,我相信你想做的事情是不可能的。 NaCl 模块只能加载到嵌入元素中。
当您将其作为 URL 键入时,它会起作用的原因是,系统会自动为您创建一个 HTML 页面,并使用填充该页面的嵌入元素。
这里有一个可能的解决方法:修改您的 Chrome 扩展程序以使用 content script 。该内容脚本可以读取页面内容并查找 jbig2 类型的所有 img 元素。如果找到,您可以将 URL 发送到 NaCl 模块(在扩展程序的后台页面中),该模块将解压缩图像并通过 ArrayBuffer 将解压缩的图像发送回 JavaScript。现在您可以创建一个Blob来自此 ArrayBuffer,以及 create a Blob URL来自 Blob 。现在可以使用此 URL 来代替 img 元素的 src 属性中的原始 URL。
关于google-chrome - 注册 Native Client 模块来处理 MIME 类型不适用于 ajax 或子请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148693/