需求是根據圖片加載後的大小寬高比,調整圖片顯示的寬高。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);
});
firefox對svg是支持的,可是支持的力度仍是有一些低的。好比一個svg格式的文件,直接扔到ff裏能夠顯示。可是當使用base64編碼的時候就不能顯示了。chrome
通過查找發現,使用base64編碼的時候,svg內部標籤不能使用cmyk格式的顏色表示,只能使用rgb的。還有不太兼容defs標籤。瀏覽器
通過仔細排查發現,在ff5.4下,audio標籤的height設置低於40px,則標籤會自動隱藏,丟失不見。因此要想audio標籤不丟失,記得把它的高度設置大於40px哦。svg