Ответ 1
Вам нужно использовать метод .text()
вместо .json()
. Это преобразует поток байтов в обычный текст, который может анализироваться браузером как HTML.
Я пытаюсь извлечь файл и вернуть его HTML. Однако это не так просто, как я мог себе представить.
fetch('/path/to/file')
.then(function (response) {
return response.body;
})
.then(function (body) {
console.log(body);
});
Это возвращает объект, называемый ReadableByteStream
. Как использовать это для захвата содержимого HTML файла?
Если я изменю содержимое /path/to/file
как строку JSON и изменим приведенное выше на:
fetch('/path/to/file')
.then(function (response) {
return response.json();
})
.then(function (json) {
console.log(json);
});
... он правильно возвращает JSON. Как сделать выборку HTML?
Вам нужно использовать метод .text()
вместо .json()
. Это преобразует поток байтов в обычный текст, который может анализироваться браузером как HTML.
Вы можете скачать html с помощью fetch, а затем проанализировать его с помощью API DomParser.
fetch('somePage.html')
.then(function(response) {
// When the page is loaded convert it to text
return response.text()
})
.then(function(html) {
// Initialize the DOM parser
var parser = new DOMParser();
// Parse the text
var doc = parser.parseFromString(html, "text/html");
// You can now even select part of that html as you would in the regular DOM
// Example:
// var docArticle = doc.querySelector('article').innerHTML;
console.log(doc);
})
.catch(function(err) {
console.log('Failed to fetch page: ', err);
});
Должно быть:
fetch('/path/to/file').then(function(response) {
return response.text();
}).then(function(string) {
console.log(string);
}).catch(function(err) {
console.log('Fetch Error', err);
});