正如许多操作,错误对globalCompositeOperation的输入只是被忽略,所以很容易看到是否支持给定模式:只需设置它,然后阅读当前模式以检查它是否是您提供的模式。
所以仅仅是明确的,你可以使用一些功能,像这样的:
// setCompositeMode : sets the globalCompositeOperation on provided context.
// return true if mode is supported, false otherwise.
function setCompositeMode(ctx, newMode) {
ctx.globalCompositeOperation = newMode;
return (ctx.globalCompositeOperation == newMode) ;
}
只是一个小例子:
var cv=document.createElement('canvas');
var ctx= cv.getContext('2d');
console.log(" Current (default) composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'destination-in'.");
ctx.globalCompositeOperation = 'destination-in';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'multiply'.");
ctx.globalCompositeOperation = 'multiply';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
console.log("setting 'i-don-t-exist' .");
ctx.globalCompositeOperation = 'i-don-t-exist';
console.log(" composite mode : " + ctx.globalCompositeOperation) ;
输出(在Chrome/MAC OS,乘支持):
" Current (default) composite mode : source-over"
"setting 'destination-in'."
" composite mode : destination-in"
"setting 'multiply'."
" composite mode : multiply"
"setting 'i-don-t-exist' ."
" composite mode : multiply"
到目前为止,移动浏览器仍然不支持'multiply'值吗?在2016年甚至有问题,以获得从ios设备上的桌面呈现相同的效果(根本没有出现在ios safari和chrome上) – bigp 2016-05-30 11:39:02