如何将 HTML 加载到 Chrome 打包应用程序中的 iframe
How to load HTML into iframe in a Chrome packaged app
我正在尝试制作一个 chrome 打包应用程序以允许文件将自身保存回磁盘。我打算使用 chrome.fileSystem.chooseEntry()
打开文件。然后我必须将它加载到带有沙箱属性集的 iframe 中。它将使用文档事件侦听器 (document.createEvent
) 等待客户端文件发送其更新的文件内容,然后将其保存回文件系统。
所以我需要做两件事,第一件事我在 Chrome 打包的应用程序中找到的信息很少,你不能在其中使用 document.write .我不能使用 body.innerHTML
,因为它是一个带有 head 元素的完整 HTML 文档。
- 我想将文件加载到 iframe 中运行。该文件可能有几 MB。数据 url 可以处理这么大的东西吗?我是否放入 src 中?或者我把它放在其他地方并将 src 设置为
javascript:void(0);
?
- 我想将一个元素注入 iframe DOM 并侦听该元素上的事件。这实际上看起来我可以从我们已有的 Firefox 实现中复制它。
这是我必须打开它的代码,是从 chrome.fileSystem
页面复制的。
chrome.fileSystem.chooseEntry(
{
type: 'openFile',
accepts:[{
extensions: ['html']
}]
},
function(fileEntry) {
if (!fileEntry) {
return;
}
console.log(fileEntry);
fileEntry.file(function(file) {
console.log(file);
var reader = new FileReader();
reader.onload = function(e) {
console.log(e);
//set iframe contentDocument
};
reader.readAsText(file);
});
}
);
这是 iframe。
<iframe id="test" sandbox="allow-scripts allow-popups allow-forms allow-same-origin" seamless="seamless"></iframe>
我最终使用了 webview。我真的很喜欢它,因为它就像一个完全正常的浏览器 window,除了上下文菜单。但是所有幕后的东西看起来都很正常,除了警告、提示和确认,你必须在父 window 中自己实现,而且你必须使用事件来允许它访问几乎任何东西外部,除了可能 ajax 个请求。
我正在尝试制作一个 chrome 打包应用程序以允许文件将自身保存回磁盘。我打算使用 chrome.fileSystem.chooseEntry()
打开文件。然后我必须将它加载到带有沙箱属性集的 iframe 中。它将使用文档事件侦听器 (document.createEvent
) 等待客户端文件发送其更新的文件内容,然后将其保存回文件系统。
所以我需要做两件事,第一件事我在 Chrome 打包的应用程序中找到的信息很少,你不能在其中使用 document.write .我不能使用 body.innerHTML
,因为它是一个带有 head 元素的完整 HTML 文档。
- 我想将文件加载到 iframe 中运行。该文件可能有几 MB。数据 url 可以处理这么大的东西吗?我是否放入 src 中?或者我把它放在其他地方并将 src 设置为
javascript:void(0);
? - 我想将一个元素注入 iframe DOM 并侦听该元素上的事件。这实际上看起来我可以从我们已有的 Firefox 实现中复制它。
这是我必须打开它的代码,是从 chrome.fileSystem
页面复制的。
chrome.fileSystem.chooseEntry(
{
type: 'openFile',
accepts:[{
extensions: ['html']
}]
},
function(fileEntry) {
if (!fileEntry) {
return;
}
console.log(fileEntry);
fileEntry.file(function(file) {
console.log(file);
var reader = new FileReader();
reader.onload = function(e) {
console.log(e);
//set iframe contentDocument
};
reader.readAsText(file);
});
}
);
这是 iframe。
<iframe id="test" sandbox="allow-scripts allow-popups allow-forms allow-same-origin" seamless="seamless"></iframe>
我最终使用了 webview。我真的很喜欢它,因为它就像一个完全正常的浏览器 window,除了上下文菜单。但是所有幕后的东西看起来都很正常,除了警告、提示和确认,你必须在父 window 中自己实现,而且你必须使用事件来允许它访问几乎任何东西外部,除了可能 ajax 个请求。