Я добавляю всю HTML-страницу в div
(чтобы очистить). Как я могу остановить его от запроса script
и css
файлов? Я попытался сразу удалить эти узлы, но они по-прежнему запрашиваются.
Это для браузера аддон, я соскоб с JSНе загружать скрипты с помощью innerHTML?
ответ
Как @adeneo писал вам не нужно, чтобы добавить HTML на страницу, с тем, чтобы очистить информацию от него, вы можете превратить его в DOM дерево, отключается от страницы DOM и обрабатывает ее там.
В jQuery просто $("html text here")
. Затем вы можете очистить его с помощью API,
например.
function scrape_html(html_string) {
var $dom = $(html_string);
var name = $dom.find('.name').text();
return name;
}
без JQuery:
function scrape_html(html_string) {
var container = document.createElement('div');
container.innerHTML = html_string;
var name = container.getElementsByClassName('name')[0].innerText;
return name;
}
К сожалению, я не использую jQuery. Я посмотрю больше. – NestedWeb
добавлен метод не jquery, который может работать - может быть проблематично добавить (который должен быть узлом верхнего уровня) в div, но не уверен. – Iftah
Я уже пробовал, что он не работает. Мне нужен один большой контейнер div, который не содержит ссылок на файлы. Я решил разделить строку html с некоторыми идентификаторами. Он работает нормально. – NestedWeb
Установка innerHTML временного HTML элемента, который не был добавлен к документу, не будет выполнять сценарии, и поскольку оно не относится к вашему документу, стиль также не будет применяться.
Это даст вам возможность вычеркнуть любые нежелательные элементы перед копированием innerHTML в ваш собственный документ.
Пример:
var temp = document.createElement('div');
temp.innerHTML = html; // the HTML of the 'other' page.
function removeElements(element, tagName)
{
var elements = temp.getElementsByTagName(tagName);
while(elements.length > 0)
{
elements[0].parentNode.removeChild(elements[0]);
}
}
removeElements(temp, 'script');
removeElements(temp, 'style');
removeElements(temp, 'link');
container.innerHTML = temp.innerHTML;
"скрести" как именно? Вам даже нужно вставить его в DOM? – adeneo
Возможно ли «querySelector» из строки? – NestedWeb
Как вы возвращаете строку для добавления на свою страницу, почему бы просто не использовать js regex для удаления скриптов и css-тегов? – Pete