Image 即使从Chrome浏览器中的DOM中删除,响应性图片元素仍能正常工作

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> <

有人能解释为什么响应图片图像在被删除后仍然使用Chrome Canary 42.0.2302.2启动吗?正如IE11和FF 35.0.1中所预期的那样-在Chrome 40.0.2214.111 m中,它被破坏了,但有趣的是,它也直接下载了这两个图像

要进行测试,请使用网络选项卡上打开的Chrome Dev工具打开测试页面。记下已显示的图像。点击页面上的任意位置以清空内容。现在调整页面大小并注意,尽管图片元素已从页面中删除,但其他图像仍会被下载

<!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元素的子元素被删除的好观点。