我有一个 Chrome 打包应用程序,它使用 chrome.fileSystem
API 来访问用户的目录。它显示目录中的所有文件,用户可以在应用程序中打开和编辑文本文件。
它显示所有文件,甚至非文本文件(例如图像),我希望用户也可以单击这些文件,但它们应该在 Chrome 操作系统标准图像查看器中打开。
有没有一个 chrome API 可以做到这一点,比如一个函数,我可以将文件的 URL 或文件条目传递给它,然后系统执行标准操作?
最佳答案
您直接问题的答案是否定的。相反,您可以执行以下操作之一:
获取文件名的扩展名,并根据该扩展名适本地显示文件。
调用
chrome.mediaGalleries.getMetadata
来确定媒体类型,并据此执行操作。
以下代码取 self 为我的书编写的示例应用程序,不能处理一般情况,因为它处理的文件只是图像、视频或音频,但它提供了一些有关如何处理的指导使用此API:
chrome.mediaGalleries.getMetadata(file, {},
function (metadata) {
if (metadata && metadata.mimeType) {
var element;
var mediaType = metadata.mimeType.split('/')[0];
var elementName = mediaType === 'image' ? 'img' : mediaType;
element = document.createElement(elementName);
element.setAttribute("controls", "controls");
viewDiv.appendChild(element);
element.style['max-width'] = '700px';
element.style['max-height'] = '700px';
element.src = URL.createObjectURL(file);
}
}
);
- (没有尝试过,所以我猜测了一下。)将
URL.createObjectURL
创建的对象 URL 直接传递到另一个窗口或应用窗口中的 Web View 。
另请注意,您无法从 Chrome 应用内访问所谓的 Chrome 操作系统标准图像查看器。
关于javascript - Chrome App - 让系统打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073609/