不加载附加innerHTML的脚本?

时间:2015-01-06 10:22:07

标签: javascript html dom

我将整个HTML页面附加到div(刮除)。如何阻止它请求scriptcss个文件?我尝试立即删除这些节点,但仍然会收到请求 这是一个浏览器插件,我用JS抓取

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

设置尚未添加到文档的临时HTML元素的innerHTML将不会执行脚本,并且由于它不属于您的文档,因此也不会应用该样式。

这会让您有机会在将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;