2012-07-12 59 views
1

我的网站中的用户,他们可以从任何其他网站(按Ctrl + A)复制整个页面,并粘贴到特殊的textarea从HTML获取一些有用的数据。如何防止浏览器从HTML中创建jQuery对象时下载图片?

但现在我看到一些问题。当我用jQuery包装胶纸的html代码:

var page = $(html); 

我的浏览器(Chrome)开始下载存在于这个网站(也许不仅图片)的所有照片。 这对我来说不好,因为我使用安全的SSL连接并从另一个站点下载图片触发浏览器安全锁图标。

我可以关闭图片下载,或者如果我不能 - 我可以使用哪一个库来解析html而不下载不需要的内容?

+0

你应该检查src属性,然后将其设置为null – 2012-07-12 14:08:34

回答

0

$(html)使得jQuery实际上将html代码注入隐藏页面的某处,以便计算宽度,高度,样式,距离,属性等。此操作始终使用浏览器的内置DOM解析器,这就是图像,iframe,背景图像,脚本,链接等被访问的原因。

您可以使用$.parseXML(html);但html代码需要有效格式化xml(xhtml)。

如果你唯一担心的是图像,但是你可以使用此代码:

// take the src attribute, change it to hiddensrc 
// credits: http://stackoverflow.com/a/1310706/608886 
var html = html.replace(/<img([^>]*)\ssrc=(['"])(?:[^\2\/]*\/)*([^\2]+)\2/gi, 
    "<img$1 hiddensrc=$2$3$2"); 

// parse the code 
var parsed = $(html); 

/////////////// 
// 
// do whatever you want here 
// 
////////////// 

// put the src attribute back at your discretion 
parsed.find(img[hiddensrc]).each(function(){ 
    $(this).attr('src',$(this).attr('hiddensrc')); 
}); 
+0

感谢的答案,它是正确的,但好像替换功能没有按不应该如此。在我的例子中,它将200kb的html字符串转换为1.5 kb的字符串。你能检查代码吗?另外,如何修改正则表达式来替换所有现有标记中的src属性? – leavelllusion 2012-07-12 17:04:38

+0

我用正则表达式不太好。恐怕你必须找到一个更好的。 – 2012-07-12 18:03:58