如何在后台加载和分析页面而不加载图像/脚本?

时间:2012-01-13 09:39:51

标签: javascript ajax dom

在没有加载任何相关图像/脚本等的情况下,为AJAX请求的页面获取可用DOM的最佳方法是什么?

<子>的背景故事: 我想在后台加载一个页面,然后对它进行一种数据挖掘(这是一个浏览器扩展,所以我无法自己控制页面)。我不想花时间在后台页面上加载图片和运行脚本,因为它只是我需要的页面内容。

2 个答案:

答案 0 :(得分:0)

  1. 通过ajax加载数据
  2. 删除包含srchref属性的所有代码,或者只是使用data:null更改这些属性的值。如果数据还包含内联样式,则应删除包含对外部资源的引用的所有语句(例如背景和边框图像,.htc组件,xul绑定,.ico游标)
  3. 将过滤后的数据附加到DOM并进行分析
  4. 第2步可以通过javascript中的正则表达式实现。 e.g。

    /* here we are in the ajax "success" callback */
    ...
    data = data.replace(/(src|href|style)=['"]([^'"]+?)['"]/gi, 
    function(match, attribute) {
       return (attribute.toLowerCase() === 'style')
           ? attribute + '=""'             /* remove all inline style */
           : attribute + '="data:null"';   /* href and src set to data:null */
    
    })
    
    /* append filtered data */
    $(data).appendTo($('body_or_other_element'))
    

答案 1 :(得分:0)

如果可能的话,使用jQuery,如上所述。它可以根据需要轻松选择页面DOM的部分。

以下是一些例子:

你可以像这样抓取标签href属性:$(“a”,$(ajax_response))。attr(“href”);

标题内容:$(“title”,$(ajax_response))。html();

您可能必须测试选择器以查看哪种工作效果最佳,但是,我认为这将是一种简单的方法。