diff --git a/src/core/utils/index.js b/src/core/utils/index.js index bf0ded9..00c55db 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -72,26 +72,29 @@ */ canUseNewCanvasBlendModes: function () { - if (typeof document === 'undefined') - { - return false; - } + if (typeof document === 'undefined') return false; - var canvas = document.createElement('canvas'), - context = canvas.getContext('2d'); + var pngHead = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/'; + var pngEnd = 'AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg=='; - canvas.width = 1; + var magenta = new Image(); + magenta.src = pngHead + 'AP804Oa6' + pngEnd; + + var yellow = new Image(); + yellow.src = pngHead + '/wCKxvRF' + pngEnd; + + var canvas = document.createElement('canvas'); + canvas.width = 6; canvas.height = 1; - context.fillStyle = '#000'; - context.fillRect(0, 0, 1, 1); - + var context = canvas.getContext('2d'); context.globalCompositeOperation = 'multiply'; + context.drawImage(magenta, 0, 0); + context.drawImage(yellow, 2, 0); - context.fillStyle = '#fff'; - context.fillRect(0, 0, 1, 1); + var data = context.getImageData(2,0,1,1).data; - return context.getImageData(0,0,1,1).data[0] === 0; + return (data[0] === 255 && data[1] === 0 && data[2] === 0); }, /**