【问题标题】:Possible for a Chrome packaged app to inspect its own package contentsChrome 打包应用程序可以检查自己的包内容
【发布时间】:2012-12-16 12:13:37
【问题描述】:

我想为我的 Chrome 打包应用构建 UI,具体取决于包中捆绑的文件集。

我想检查子文件夹,找到 UI 文件(子文件夹、png、wav、mp3、字体文件),然后根据它们创建 UI 元素。

File API 在旁边有一个单独的根,所以没有帮助。

我已经看到如何为我的应用目录获取 chrome-extension: URL,但我不知道如何检查其内容。

即使是只读访问也足够了。

有什么想法吗?谢谢!

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    没有用于检查您的应用内容的 API。但是,您可以在打包过程中添加一个简单的脚本(假设它是自动化的),以将这些 UI 文件的列表写入 JSON 文件,并将此文件与您的应用程序打包。

    如果你在这个文件的内容前面加上适当的 JavaScript 命令,你甚至不需要 XHR 来加载它,只需通过脚本标签添加它。

    例如:

    生成文件列表的 Bash 脚本(打包时):

    #!/bin/bash
    echo "getUIContentList = function() {"
    echo "  return ["
    for f in `find . -name '*.png' -or -name '*.mp3'` ; do
      echo "    \"$f\","
    done
      echo "    false"  # this is to avoid special logic for trailling comma
    echo "  ];"
    echo "}"
    

    ui_content_list.js(由脚本自动生成,嵌入到您的应用中):

    getUIContentList = function() {
      return [
        "css/main.css",
        "img/logo.png",
        "img/logo2.png"
      ];
    }
    

    文件索引.html:

    <html>
    ...
    <script src="ui_content_list.js"></script>
    <script src="index.js"></script>
    ...
    

    文件 index.js:

    getUIContentList().forEach(function(filename) {
      if (filename) {  // get all itens except the last "false" value
        var internalUrl = chrome.runtime.getURL(filename);
        doSomething(internalUrl);
      }
    });
    

    【讨论】:

    • 谢谢。目前我正在 Chrome 中开发,因此加载了一个未打包的应用程序,并且为了打包我直接使用 Chrome 开发人员工具(我认为只是一个 ZIP?或者可能正在进行一些签名?)。
    • 在开发阶段,您仍然可以将上面的脚本用于未打包的应用程序。每次从应用目录添加或删除文件时,您只需手动运行脚本。
    • 关于签名,您可以生成一个 ZIP 文件(未签名)以在 Chrome 网上应用店中发布,或者您创建一个 CRX(已签名)以直接部署在其他测试浏览器中。
    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多