如果你用/ jquery删除()一个img标签,浏览器是否仍会尝试并检索它?

时间:2012-04-13 01:59:46

标签: jquery browser

如果img src指向不存在的文件,是否会阻止缓存中的404?

谢谢!

4 个答案:

答案 0 :(得分:2)

当您的任何javascript运行以从DOM中删除图像时,图像标记已经被解析,并且加载图像URL的请求至少已排队并且可能已经发送。

如果在删除图像标记时尚未完成图像加载,浏览器是否足够智能以中止图像加载将是特定于浏览器的行为。它甚至可能已经完成。

您应该意识到,在解析DOM之前,javascript无法修改DOM。这意味着在你有机会用javascript修改它们之前,已经设置了像图像标签这样的东西。这只是浏览器设计的一个事实或限制。

如果您控制HTML并且有时在该位置需要不同的图像,那么最好不要将图像标记放在HTML中。当您的代码运行并确定它想要的图像时,它可以创建适当的图像标记并将其插入DOM。然后,浏览器不会花任何时间加载您不想要的图像。

如果你不在乎是否加载了额外的图像,只是想在设置正确的图像之前确保它没有显示错误的图像,那么将图像标记标记为display: none或{{ 1}}直到您确定正确的img URL到位,然后才能使其可见。在解析标记之前处理CSS,以便在创建标记时应用CSS。

答案 1 :(得分:1)

为什么不试试呢?

这是一个小提琴:http://jsfiddle.net/atFtS/和来源:

<img src="http://www.asdfghjkl.com/qwerty.png" style="display:none" />​

打开浏览器检查器(我正在使用Chrome),转到网络标签,看看会发生什么。

它确实尝试加载图像,即使它不会被渲染。

这是另一个小提琴:http://jsfiddle.net/atFtS/1/我添加了:

$('img').remove();​

它仍然加载了图像,可能缓存了404点击。

答案 2 :(得分:0)

可能不是。在所有元素准备就绪后,Javascript在文档加载时运行。

答案 3 :(得分:0)

  1. 我不确定你在问什么,但是你会在dom中加载img,浏览器将会获取它,即使它是display:none。 (不确定每个浏览器,但它是以幻灯片形式缓存图像的方式)

  2. 此外,一旦你将它加载到你的dom上,无论你删除它,它都会在你的缓存中。