firefox-5.x关于img标签的load事件、svg、ff5.4audio标签显示的适配tip

1.firefox中img标签的load事件后获取图片宽高错误。

需求是根据图片加载后的大小宽高比,调整图片显示的宽高。javascript

在chrome浏览器下,使用jquery的load方法监听img标签的“加载完成”事件。在其回调里,便可得到加载完成后的图片的宽高,代码以下:java

$('img').load(function() {

    //输出图片宽高,firefox将输出img标签原来的高度,而不是加载完成后图片的高度。
    console.log($(this).height());

    //...do some thing

});

上边这段代码在firefox中就不能顺利的运行了。缘由是firefox的load事件实现与chrome不一样。firefox的load事件回调时,img标签的宽高并无调整为加载后图片的宽高。jquery

这里须要介绍另一个img标签的属性:complete。complete也是用来判断图片是否加载完成了的。firefox在complete为1的时候能够肯定img标签的宽高已经调整完成。因此,代码进行了一些修改:web

$('img').load(function() {
    let $th = $(this);

    //输出图片宽高,firefox将输出img标签原来的高度,而不是加载完成后图片的高度。
    console.log($th.height());

    let timer = setInterval(function() {
        if ($th[0].complete) {
            clearInterval(timer);
            console.log($th.height());

            //...do some thing...

        }
    }, 50);

});

2.关于firefox对svg图的支持问题。

firefox对svg是支持的,可是支持的力度仍是有一些低的。好比一个svg格式的文件,直接扔到ff里能够显示。可是当使用base64编码的时候就不能显示了。chrome

通过查找发现,使用base64编码的时候,svg内部标签不能使用cmyk格式的颜色表示,只能使用rgb的。还有不太兼容defs标签。浏览器

3.ff5.4的audio标签不见啦?

通过仔细排查发现,在ff5.4下,audio标签的height设置低于40px,则标签会自动隐藏,丢失不见。因此要想audio标签不丢失,记得把它的高度设置大于40px哦。svg

相关文章
相关标签/搜索