在Chrome App Webview中加载本地文件

时间:2014-04-29 20:01:55

标签: javascript google-chrome webview google-chrome-app

在Chrome打包的应用中,您可以使用它来加载应用内的外部网页。有没有办法让他们加载本地文件(打包应用程序内的html文件)?我不能使用iframe,因为iframe不支持外部资源(脚本,图像等)。

4 个答案:

答案 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文件。我想如果内容是静态的,你可以打包应用程序,但我还没试过。