在Chrome打包的应用中,您可以使用它来加载应用内的外部网页。有没有办法让他们加载本地文件(打包应用程序内的html文件)?我不能使用iframe,因为iframe不支持外部资源(脚本,图像等)。
答案 0 :(得分:1)
没有要显示的代码,但请尝试这样做:假设您可以读取本地文件(必须使用chrome.fileSystem.chooseEntry或在文件或其包含目录上保留一个条目)并获取FileEntry然后,您可以创建FileReader以将文件作为数据URL。然后,您可以直接在Webview中使用该数据URL。 (除了访问FileEntry所需的权限外,还必须具有webview权限。)
[以上是我在吃早餐时的记忆。可能会略微关闭一些API名称,但我希望你能得到一般的想法。]
答案 1 :(得分:1)
local-resources示例有一个在webview中加载html文件的示例。您需要在manifest.json的webview.partitions部分指定文件。
答案 2 :(得分:0)
您可以尝试通过XMLHttpRequest将文件作为Blob加载,然后创建一个对象网址,将其设置为webview的src
属性:
window.onload = function() {
var wv = document.getElementById("wv");
var xhr = new XMLHttpRequest();
xhr.open('GET', 'local_file.html', true);
xhr.responseType = 'blob';
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var blob = new Blob([this.response], {type: 'text/html'});
wv.src = window.URL.createObjectURL(blob);
}
};
xhr.send();
};
以下是一个工作示例:chrome_app_webview_test。
答案 3 :(得分:0)
不完全确定您要查找的内容,但我已成功使用< webview>标记指向UNpackaged Chrome App的目录结构中的本地.html文件(包括图像和视频资源)。作为其URL,我只使用window.location.origin +'/ files / my.html'。我将我的应用程序解压缩,以便我可以动态生成.html文件。我想如果内容是静态的,你可以打包应用程序,但我还没试过。