有没有一种方法加载包含图像标记为jQuery的,而无需请求图像的HTML字符串? 我希望能够在jQuery对象上运行选择提取一些信息。 以下面的例子:
var string = $('
');string.find('img');
浏览器会为请求的HTTP://image.url/file.jpg 。 我试图找到一种方式做同样的,但没有庄家对图像的请求的浏览器。
谢谢
Answer 1:
您可以使用XML文件来执行搜索:
function searchXml(xmlStr, selector) {
var parser, xmlDoc;
if(window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlStr, "text/xml");
} else {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(xmlStr);
}
return $(xmlDoc).find(selector);
}
console.log(searchXml('
', 'img').attr('src'));看到它在行动: http://jsfiddle.net/na9Tt/
请记住,这是一个XML文档,而不是HTML文件,所以某些特定类型的搜索所特有的HTML可能无法正常工作完全一样的方式。
Answer 2:
你需要清楚地了解你的问题的边界。 如果你的问题是:“你有没有可以加载额外的HTML(不改变它)到jQuery对象(如你正在做的),而不会导致图像加载任何方式”,那么答案是否定的。 jQuery的创建一个临时父对象和你的HTML分配给这会导致浏览器完全解析这个HTML将加载图像的URL innerHTML属性。
所以,如果你想在不加载图像上运行此HTML选择操作,你有几种选择:
给HTML将jQuery所以他们之前修改图像标记.src性能都消失了或为空或标签是不是图片代码或不再存在。
使用其他的东西比这种类型的jQuery解析你的HTML,为选择操作做准备。
如果你公开了一种稍微介绍一下为什么你想这样做,或者你正试图与选择的操作做什么,我们也许可以提出更多的选择。
Answer 3:
您可以将图像路径添加到另一个属性,像这样
然后当你需要,你可以替换数据-SRC的SRC属性。 像这样的事情
$('#imgid').attr('src',$('#imgid').attr('data-src'));
Answer 4:
这是Chrome浏览器仅据我所知,发现它在这里 ,该网页上的第一种方法可能不是如果字符串不是有效的HTML工作,第二个能正常工作。 不创建请求图像,并且不试图执行内嵌脚本(这是适合我的使用案例 - 浏览器扩展程序后台任务)。
var doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = htmlString;
文章来源: load an HTML string into jQuery without requesting images