我有一个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
我不知道从哪里开始。在此先感谢您的帮助!
答案 0 :(得分:1)
看起来webview
标记不支持文件系统URI - Chromium Issue 321628。长号。
您可以尝试使用FileReader将文件读取到数据网址,然后将webview
的{{1}}属性设置为网址。
我通过使用我在NaCl中创建的一个简单的Web服务器来解决这个问题,我已经将其嵌入到我的应用程序中(数据URL正在弄乱我的文件编码)。
答案 1 :(得分:0)
您可以通过在应用程序中包含web server for chorme库来解决此问题。网站上有一些示例,说明如何将其包含在您自己的Chrome应用中。它需要您在清单中使用额外的权限,即一些chrome.sockets权限。