我有popup.html,当点击浏览器操作加载弹出窗口时调用popup.js。我在那里以编程方式注入内容脚本 chrome.tabs.executeScript()
。我需要在页面的主体上附加一个元素。如何在扩展中插入来自不同.html文件的HTML代码,因为这样维护代码要容易得多。我想在popup.js中访问它(是否有一些API调用?)然后在其中 code
使用检索到的HTML代码字符串插入内容脚本代码的属性。
我看到了一些方法 XMLHttpRequest
来自内容脚本,但有没有避免这种情况?我试过了 chrome.fileSystem
,但这是针对Chrome应用而非扩展。
正如提到的评论,这只是向GET请求提出的问题 chrome.runtime.getURL("myfile.html")
,哪里 "myfile.html"
是相对路径(从扩展的根目录)到您想要的文件。
您可以使用原始XHR执行此操作,或者,如果您使用的是jQuery,则可以使用 $.ajax
。
要从内容脚本执行此操作,您需要将其声明为 "web_accessible_resources"
。
既然你不想这样,是的,还有另一种方式(内容脚本不可用)。
您可以获得只读 HTML5文件系统 使用访问您的扩展程序的文件 chrome.runtime.getPackageDirectoryEntry
:
chrome.runtime.getPackageDirectoryEntry(function(root) {
root.getFile("myfile.html", {}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
// contents are in this.result
};
reader.readAsText(file);
}, errorHandler);
}, errorHandler);
});
如您所见,这比XHR请求复杂得多。人们可能只在有人愿意的时候使用它 列出文件。