google-chrome - 注册 Native Client 模块来处理 MIME 类型不适用于 ajax 或子请求

标签 google-chrome google-chrome-extension google-nativeclient

我正在使用 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/

相关文章:

c++ - 将旧的 C++ 代码集成到 PNaCI 模块中

llvm - pypy 在浏览器中?

javascript - 如何在常规输入中隐藏 Android 密码建议功能区上的 Chrome

javascript - Chrome 扩展 : Extension context invalidated when getting URL

javascript - Chrome 扩展程序 : Uncaught SyntaxError: Unexpected token return

javascript - Chrome 忽略扩展中来自 XMLHttpRequest 的 Set-Cookie 响应 header

google-chrome - chrome.fileSystem 可以在 Google Native Client 中使用吗

只适用于 Chrome 的 CSS?

javascript - 在 chrome 中工作时 string.contains() 不存在

javascript - 我是否需要刷新页面来查看索引数据库是否已重置?