我在允许跨域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字符串上调用它会触发加载的图像。还有其他选择吗?
答案 0 :(得分:2)
为什么会发生这种情况需要解释here:
如果HTML比没有属性的单个标签更复杂,则元素的实际创建由浏览器的innerHTML机制处理。在大多数情况下,jQuery会创建一个新元素,并将元素的innerHTML属性设置为传入的HTML片段。
因此,当您执行$(data)
时,它会在您的网页上插入所有html。
如何避免它。如果您要搜索的内容不需要复杂的jquery选择器,也许您可以自己解析html(例如使用...正则表达式* gulp *)。
答案 1 :(得分:0)
除非您将此HTML插入DOM,否则它只是一个字符串,我怀疑浏览器是否会开始提取图像。
在将其插入DOM之前,您可以对src =“...”执行搜索替换,并将其替换为行xxx =“...”。