Image 即使从Chrome浏览器中的DOM中删除,响应性图片元素仍能正常工作
有人能解释为什么响应图片图像在被删除后仍然使用Chrome Canary 42.0.2302.2启动吗?正如IE11和FF 35.0.1中所预期的那样-在Chrome 40.0.2214.111 m中,它被破坏了,但有趣的是,它也直接下载了这两个图像 要进行测试,请使用网络选项卡上打开的Chrome Dev工具打开测试页面。记下已显示的图像。点击页面上的任意位置以清空内容。现在调整页面大小并注意,尽管图片元素已从页面中删除,但其他图像仍会被下载Image 即使从Chrome浏览器中的DOM中删除,响应性图片元素仍能正常工作,image,element,Image,Element,有人能解释为什么响应图片图像在被删除后仍然使用Chrome Canary 42.0.2302.2启动吗?正如IE11和FF 35.0.1中所预期的那样-在Chrome 40.0.2214.111 m中,它被破坏了,但有趣的是,它也直接下载了这两个图像 要进行测试,请使用网络选项卡上打开的Chrome Dev工具打开测试页面。记下已显示的图像。点击页面上的任意位置以清空内容。现在调整页面大小并注意,尽管图片元素已从页面中删除,但其他图像仍会被下载 <!DOCTYPE html> <
<!DOCTYPE html>
<html>
<head>
<title>Test Picture Element</title>
<meta charset="utf-8">
</head>
<body>
<picture>
<source srcset="http://placehold.it/768/f00/fff" media="(max-width: 768px)">
<source srcset="http://placehold.it/992/0f0/fff" media="(max-width: 992px)">
<img srcset="http://placehold.it/1200/00f/fff">
</picture>
</body>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript">
$(function(){
$('body').on('click', function() {
$('body').empty();
});
});
</script>
</html>
为方便起见:因为Chrome中没有正确设置突变。这类似于人们有时编写JS代码的方式 例如:
$('.nav').each(function(){
var $nav = $(this);
var sizeNav = function(){
//some code
};
$(window).on('resize', sizeNav);
});
事实上,他们应该这样做:
$('.nav').each(function(){
var $nav = $(this);
var sizeNav = function(){
//some code
};
$(window).on('resize', sizeNav);
$nav.on('remove', function(){
//destroy code
$(window).off('resize', sizeNav);
});
});
这是一个严重的问题,请报告!:
您的主要观点是,这是一个缺陷。我现在就记录一个,过一会儿再公布缺陷编号。在您的示例中,jQuery的empty方法清除所有事件侦听器。为了避免内存泄漏,jQuery在删除元素本身之前从子元素中删除其他结构,如数据和事件处理程序。但我猜你们只是在打个比方。铬问题的链接:-一旦我得到一些反馈,就会将帖子标记为已回复。谢谢你的回复。当然,我把这当作一个类比。2.是,如果删除nav元素,则所有绑定到nav及其子元素的事件都将被删除。窗口不是子元素!因此,您需要手动删除它…对,得到了一个关于窗口侦听器不作为nav元素的子元素被删除的好观点。