jQuery加载带图像的HTML会将错误呈现给控制台

时间:2013-08-15 21:26:04

标签: jquery html image parsing exception

当我尝试加载简单的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加载图片?

3 个答案:

答案 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)

这个怎么样:

  1. 使用var存储src并为图像分配id

    var src="http://not.found/1.jpg";

  2. 创建你的html var

    var html = $('<div>' + '<img id="imgid" />' + '</div>');

  3. 将属性scr添加到图像

    jQuery("#imgid").attr('src',src );