Как получить DOM страницы по url
из расширения Crome пытаюсь получить DOM-структуру страницы по ссылке. Использую такой код:
var doc = document.body;
fetch(order_data['skuhref']).then(function(response) {
response.text().then(function(text) {
doc.textContent = text;
});
});
В этой переменной order_data['skuhref'] находится url.
Скрипт возвращает страницу в виде html текста. А как получить страницу в виде DOM, чтобы удобно можно было обращаться к нужным элементам?
Ответы (3 шт):
Автор решения: trunov
→ Ссылка
Если речь идет про браузер, то в браузере уже есть DOM:
const dom = window.document;
Автор решения: Ein
→ Ссылка
Как вариант, можно создать div элемент и в innerHTML положить полученный html.
var doc = document.body;
fetch(order_data['skuhref']).then(function(response) {
response.text().then(function(text) {
doc.textContent = text;
let dom = document.createElement('div');
dom.innerHTML = text;
// теперь можно пользоваться селекторами как обычно
console.log(dom.querySelector('h1'));
});
});
Автор решения: Sturmer
→ Ссылка
По совету Grundy сделал вот так:
fetch(order_data['skuhref']).then(function(response) {
response.text().then(function(text) {
var parser = new DOMParser();
var sku_document = parser.parseFromString(text, "text/html");
........
});
});
Просто, красиво и работает!