javascript - img对象无限触发onload事件。查了很多不知道怎么办。。
黄舟
黄舟 2017-04-10 17:25:33
[JavaScript讨论组]
 $("#fileupload").on('change', function(e) {
                        if(e.target.files || e.dataTransfer.files) {
                            var $img = $('<img>');
                            var $goods_imgs = $('.goods_imgs');
                            var $goods_img = $('<p>').addClass('goods_img');
                            
                            $img.attr("src", getObjectURL(this.files[0]));
                            $goods_img.append($img);
                            $goods_imgs.append($goods_img);
          
                            $img.on('load', function() {
                                $img.attr("src", getBase64Image($img.get(0)));
                            });
                        }
                    });
                    
                    
                    
                    好像是说在src改变的时候就会触发onload事件, 但是在onload事件最后已经改变了src。
             
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
阿神
$img.on('load', function() {
    $img.attr("src", getBase64Image($img.get(0)));
    $img.off('load')
});
PHP中文网

这是jquery嘛?如果是的话jquery有一个只触发一次的 one 方法,第一次load改变了img的src,但因为只触发一次,所以不会再执行。

$img.one('load', function() {
    $img.attr("src", getBase64Image($img.get(0)));
});
怪我咯

图像元素只要设置了src属性后就会开始下载图像。
你这样的写法是图像下载完成后就设置了src属性,于是图片加载,加载完成之后又开始设置src属性,就死循环了
所以把$img.attr("src", getBase64Image($img.get(0)));放到load事件外就行了

天蓬老师

这是做 图片预览的 赶脚 ?
$("#fileupload").on('change') 是因为触发 这个吗?
console.log() 多打几个定位, return false 阻止冒泡

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号