我正在编写Safari App Extension。在我的扩展文件夹中,我有一个HTML文件,我想阅读并使用Javascript附加到网页。我无法弄清楚如何阅读文件。我愿意使用Javascript或Swift代码。任何帮助将不胜感激,谢谢!
答案 0 :(得分:4)
您可以使用XMLHttpRequest读取文本或HTML文件,如下所示:
var oReq = new XMLHttpRequest();
oReq.addEventListener('load', function () {
// file contents will be in `this.responseText`;
console.log(this.responseText);
});
oReq.open('GET', 'myfile.html');
oReq.send();
请注意,此示例中的URL是相对的。如果在全局页面上使用此代码,则它将相对于全局页面。如果您在注入的脚本中使用它,它将相对于您将脚本注入的网页,这不是您想要的。在这种情况下,您需要使用以扩展程序的基本URL开头的绝对URL。要获取基本网址,请使用safari.extension.baseURI
。这是上面示例中的第6行,但使用了这样的绝对URL:
oReq.open('GET', safari.extension.baseURI + 'myfile.html');
使用XMLHttpRequest的一个更糟糕的替代方法是在扩展程序的全局页面内的iframe中加载HTML文件,然后从全局页面上的脚本“读取”iframed页面的document.body.innerHTML
。
答案 1 :(得分:-1)
我最终终于找到了如何在Swift代码中执行此操作。我几天只和Swift一起工作,所以这个样本可能不太好但希望它有所帮助:
// The file path below is relative to the root of the extension directory.
let filename: NSString = "folder/file.html" as NSString
let pathExtention = filename.pathExtension
let pathPrefix = filename.deletingPathExtension
if let filepath = Bundle.main.path(forResource: pathPrefix, ofType: pathExtention) {
do {
let contents = try String(contentsOfFile: filepath, encoding: .utf8)
} catch {
// contents could not be loaded
}
}