如何在Chrome应用程序webview中显示文件系统URL?

时间:2015-01-13 22:50:34

标签: webview google-chrome-app

我有一个Chrome打包的应用程序,要求我能够查看已保存的,已脱机的网页。当用户在线并将其保存到HTML5文件系统时,可以从我的服务器下载这些页面,以便可以脱机查看这些页面。此Chrome错误提示似乎表明我想要做的事情是:https://code.google.com/p/chromium/issues/detail?id=343382

基于Chrome应用'webview'文档(https://developer.chrome.com/apps/tags/webview),这就是我想出来的。

在我的清单中:

"permissions": [
    {
        "fileSystem": ["write"]
    },
    "storage",
    "unlimitedStorage",
    "webview"
],
"webview": {
    "partitions": [
        {
            "name":"contentView",
            "accessible_resources":["*.html"]
        }
    ]
}

我的网页浏览代码:

<webview id="websiteWebview" minwidth="800" minheight="600" autosize="on" partition="contentView"></webview>

然后我通过javascript添加'src'属性:

var websiteWebview = document.querySelector('#websiteWebview');
websiteWebview.setAttribute('src', decodeURIComponent(srcUrl));

这导致控制台中出现以下内容:

filesystem:chrome-extension://[appId]/[pathToFile]/index.html
Failed to load resource: net::ERR_FILE_NOT_FOUND
Not allowed to load local resource: filesystem:chrome-extension://[appId]/[pathToFile]/index.html

我不知道从哪里开始。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

看起来webview标记不支持文件系统URI - Chromium Issue 321628。长号。

您可以尝试使用FileReader将文件读取到数据网址,然后将webview的{​​{1}}属性设置为网址。

我通过使用我在NaCl中创建的一个简单的Web服务器来解决这个问题,我已经将其嵌入到我的应用程序中(数据URL正在弄乱我的文件编码)。

答案 1 :(得分:0)

您可以通过在应用程序中包含web server for chorme库来解决此问题。网站上有一些示例,说明如何将其包含在您自己的Chrome应用中。它需要您在清单中使用额外的权限,即一些chrome.sockets权限。