如何在没有浏览器加载引用图像的情况下执行跨域GET?

时间:2011-08-05 15:29:38

标签: jquery ajax google-chrome-extension

我在允许跨域HTTP请求的环境中使用$.get(),即chrome扩展。我正在使用它来抓取页面,并刮掉信息以显示给用户。这很有效。

唯一的问题是浏览器会尝试加载已删除页面中引用的每个图像,这会极大地增加数据传输,并在找到相对URL时填充检查器错误。

这是我的代码:

$.get('http://somewebsite.com/page-with-lots-of-images.htm', function(data) {
    var thingsICareAbout = $(data).find('#some-id, #some-other-id');
    foo(thingsICareAbout);
});

我怎样才能让#some-id#some-other-id无法加载文档中的所有图片?


编辑:只有在$(data)来电后才会加载图片。不知何故,在html字符串上调用它会触发加载的图像。还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

为什么会发生这种情况需要解释here

  

如果HTML比没有属性的单个标签更复杂,则元素的实际创建由浏览器的innerHTML机制处理。在大多数情况下,jQuery会创建一个新元素,并将元素的innerHTML属性设置为传入的HTML片段。

因此,当您执行$(data)时,它会在您的网页上插入所有html。

如何避免它。如果您要搜索的内容不需要复杂的jquery选择器,也许您可​​以自己解析html(例如使用...正则表达式* gulp *)。

答案 1 :(得分:0)

除非您将此HTML插入DOM,否则它只是一个字符串,我怀疑浏览器是否会开始提取图像。

在将其插入DOM之前,您可以对src =“...”执行搜索替换,并将其替换为行xxx =“...”。