当我尝试加载简单的html片段(带有一些图片,但现在无法访问)时,jQuery因某种原因尝试加载它们,并在控制台中产生错误。
这是示例代码:
var html = $('<div>' + '<img src="http://not.found/1.jpg"/>' + '</div>');
这是错误:
GET http://not.found/1.jpg jquery-2.0.3.js:5788
x.extend.buildFragment jquery-2.0.3.js:5788
x.extend.parseHTML jquery-2.0.3.js:493
x.fn.x.init jquery-2.0.3.js:127
x jquery-2.0.3.js:63
(anonymous function)
InjectedScript._evaluateOn
如何阻止jQuery尝试从html加载图片?
答案 0 :(得分:1)
它是用于解析HTML的文档片段的“特征”。你需要实现(或使用)另一个解析器,而不是jQuery。
两个代码示例都会因负载失败而生成错误消息(Chrome 28)。
(function () {
var docFragment = document.createDocumentFragment();
var img = document.createElement("img");
img.src = "http://not.found/1.jpg";
docFragment.appendChild(img);
}());
(function () {
var docFragment = document.createDocumentFragment();
var div = document.createElement("div");
docFragment.appendChild(div);
div.innerHTML = '<img src="http://not.found/1.jpg"/>';
}());
PS:与insertAdjacentHTML
的伎俩相同
答案 1 :(得分:0)
jQuery - 是DOM操纵符,但不是HTML字符串解析器。
为了执行任何操作,jQuery总是将传递的字符串转换为DOM,从而触发图像下载。
您应该查看纯HTML字符串解析器的库,而不需要转换为DOM。
例如http://ejohn.org/blog/pure-javascript-html-parser/(来自John Resig) 或https://npmjs.org/package/htmlparser
答案 2 :(得分:-1)
这个怎么样:
使用var存储src并为图像分配id
var src="http://not.found/1.jpg"
;
创建你的html var
var html = $('<div>' + '<img id="imgid" />' + '</div>');
将属性scr添加到图像
jQuery("#imgid").attr('src',src );