[英]How do I load a local HTML file in a Safari App Extension
我正在寫一個Safari App Extension。 在我的擴展程序文件夾中,我有一個HTML文件,我想使用Javascript讀取並附加到網頁上。 我不知道如何讀取文件。 我願意使用Javascript或Swift代碼來做到這一點。 任何幫助,將不勝感激,謝謝!
您可以讀取帶有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。 要獲取基本URL,請使用safari.extension.baseURI
。 這是上述示例的第六行,但使用的是絕對網址:
oReq.open('GET', safari.extension.baseURI + 'myfile.html');
使用XMLHttpRequest的一種更具技巧性的替代方法是將HTML文件加載到擴展程序全局頁面內的iframe中,然后從全局頁面上的腳本“讀取” iframed頁面的document.body.innerHTML
。
最后,我終於弄清楚了如何在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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.