2017-01-17 3 views
-1

Я пишу расширение приложения Safari. В моей папке расширения у меня есть HTML-файл, который я хотел бы прочитать и добавить на веб-страницу с помощью Javascript. Я не могу понять, как читать в файле. Я открыт для этого, используя Javascript или код Swift. Любая помощь будет оценена, спасибо!Как загрузить локальный HTML-файл в расширение приложения Safari

ответ

-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 
    } 
} 
+0

Я не уверен, как это сделать на новой вкладке. Все, что я делал, было на уже открытой вкладке ... – NorthFork

3

Вы можете прочитать текст или HTML-файл с небольшим количеством XMLHttpRequest, например, так:

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. Вот шестая строка из приведенного выше примера, но используя такой абсолютный URL:

oReq.open('GET', safari.extension.baseURI + 'myfile.html'); 

Более Hacky альтернативы использованию XMLHttpRequest является, чтобы загрузить файл HTML в IFRAME внутри глобальной страницы расширения, а затем «чтение» document.body.innerHTML страницы iframed из сценария на глобальной странице.

+0

Спасибо за ответ. Я смог разобраться с Swift как раз перед тем, как увидел этот пост, поэтому у меня не было возможности проверить. Работает ли safari.extension.baseURI с новым способом создания расширений приложений Safari? – NorthFork

 Смежные вопросы

  • Нет связанных вопросов^_^