実際にAPNG Modernizr Test自体
APNGのサポートを定義するJavaScriptコードの小さな断片を見つけた後、私は何らかの理由ですぐにそれをModernizrに固定したいと思いました。
/** * APNG Modernizr Test Workaround */ (function(){ var testImage = new Image(); var canvasContext = document.createElement('canvas').getContext('2d'); var isApngSupported = false; testImage.onload = function () { canvasContext.drawImage(testImage, 0, 0); isApngSupported = canvasContext.getImageData(0, 0, 1, 1).data[3] === 0; if (typeof isApngSupported !== "boolean") { var isApngSupported = false; } Modernizr.addTest('apng', function() { return isApngSupported; }); }; testImage.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="; })();
ブラウザがAPNGをサポートしているかどうかに応じて、
html
タグには追加の
apng
または
no-apng
ます。 CSSから、次のように使用できます。
.no-apng .preloader { background-image: url(some.gif); } .apng .preloader { background-image: url(some.png); }
アニメーションを理解しないプログラムの場合、APNGは静的なPNGとして表示されます。
同僚のSeVit `yに感謝します。