2015-01-06 2 views
0

Я добавляю всю HTML-страницу в div (чтобы очистить). Как я могу остановить его от запроса script и css файлов? Я попытался сразу удалить эти узлы, но они по-прежнему запрашиваются.
Это для браузера аддон, я соскоб с JSНе загружать скрипты с помощью innerHTML?

+0

"скрести" как именно? Вам даже нужно вставить его в DOM? – adeneo

+0

Возможно ли «querySelector» из строки? – NestedWeb

+0

Как вы возвращаете строку для добавления на свою страницу, почему бы просто не использовать js regex для удаления скриптов и css-тегов? – Pete

ответ

0

Как @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; 
} 
+0

К сожалению, я не использую jQuery. Я посмотрю больше. – NestedWeb

+0

добавлен метод не jquery, который может работать - может быть проблематично добавить (который должен быть узлом верхнего уровня) в div, но не уверен. – Iftah

+0

Я уже пробовал, что он не работает. Мне нужен один большой контейнер div, который не содержит ссылок на файлы. Я решил разделить строку html с некоторыми идентификаторами. Он работает нормально. – NestedWeb

0

Установка 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;