查看源代码,它几乎看起来像一个错误,您无法以您期望的方式将其设置为 null(作为 setOverlayImage 的参数)。查看static_canvas.class.js你会看到源代码setOverlayImage()
:
setOverlayImage: function (url, callback) { // TODO (kangax): test callback
return fabric.util.loadImage(url, function(img) {
this.overlayImage = img;
callback && callback();
}, this);
}
在util/misc.js中,您可以看到以下的源代码util.loadImage()
:
function loadImage(url, callback, context) {
if (url) {
var img = new Image();
/** @ignore */
img.onload = function () {
callback && callback.call(context, img);
img = img.onload = null;
};
img.src = url;
}
}
所以你可以看到如果你将 null 传递给setOverlayImage()
, null 将反过来成为 的参数util.loadImage()
。如果后者的参数为 null,则该方法不执行任何操作,因此整个操作也不执行任何操作。
看来您必须作弊并直接在canvas
对象上设置属性:
canvas.overlayImage = null;
canvas.renderAll.bind(canvas);