Fabric.js Image.fromURL 在 Firefox 中不工作
Fabric.js Image.fromURL not working in Firefox
我正在使用 Fabric.js 和 jQuery UI 作为拖放场景创建器。当我将图像拖放到 Chrome 上的 canvas 时,一切正常。但是,当我在 Firefox 上拖放图像时它什么也没做,并且在控制台中出现以下错误:
TypeError: t is undefined
这是我的代码:
// HTML
<canvas id="scene"></canvas>
// Draggable setup
$('.scene-item').draggable({
helper: 'clone',
appendTo: 'body',
containment: 'window',
scroll: false,
zIndex: 9999
});
// Drop Setup
var canvas = new fabric.Canvas('scene');
canvas.setDimensions({
width: '800px',
height: '500px'
}, {
cssOnly: true
});
document.getElementById("scene").fabric = canvas;
canvas.on({
'object:moving': function(e) {
e.target.opacity = 0.5;
},
"object:modified": function(e) {
e.target.opacity = 1;
}
});
$('#scene').droppable({
drop: function(e, ui) {
if ($(e.target).attr('id') === 'scene') {
var pointer = canvas.getPointer();
fabric.Image.fromURL(ui.draggable[0].currentSrc, function (img) {
console.log(img);
img.set({
left: pointer.x - 20,
top: pointer.y - 20,
width: 52,
height: 52,
scale: 0.1
});
//canvas.clear();
canvas.add(img);
canvas.renderAll();
});
}
}
});
对正在发生的事情有什么想法吗?
编辑:
我使用了常规 fabric.js 而不是缩小版本,错误是:
TypeError: event is undefined
我知道出了什么问题。我没有将事件传递给 getPointer() 函数。
这段代码现在可以正常工作了:
$('#scene').droppable({
drop: function(e, ui) {
if ($(e.target).attr('id') === 'scene') {
var pointer = canvas.getPointer(e);
fabric.Image.fromURL(ui.draggable[0].currentSrc, function (img) {
img.filters.push(new fabric.Image.filters.Resize({scaleX: 0.2, scaleY: 0.2}));
img.set({
left: pointer.x - 20,
top: pointer.y - 20,
width: 52,
height: 52
});
canvas.clear();
canvas.add(img);
canvas.renderAll();
});
}
}
});
我正在使用 Fabric.js 和 jQuery UI 作为拖放场景创建器。当我将图像拖放到 Chrome 上的 canvas 时,一切正常。但是,当我在 Firefox 上拖放图像时它什么也没做,并且在控制台中出现以下错误:
TypeError: t is undefined
这是我的代码:
// HTML
<canvas id="scene"></canvas>
// Draggable setup
$('.scene-item').draggable({
helper: 'clone',
appendTo: 'body',
containment: 'window',
scroll: false,
zIndex: 9999
});
// Drop Setup
var canvas = new fabric.Canvas('scene');
canvas.setDimensions({
width: '800px',
height: '500px'
}, {
cssOnly: true
});
document.getElementById("scene").fabric = canvas;
canvas.on({
'object:moving': function(e) {
e.target.opacity = 0.5;
},
"object:modified": function(e) {
e.target.opacity = 1;
}
});
$('#scene').droppable({
drop: function(e, ui) {
if ($(e.target).attr('id') === 'scene') {
var pointer = canvas.getPointer();
fabric.Image.fromURL(ui.draggable[0].currentSrc, function (img) {
console.log(img);
img.set({
left: pointer.x - 20,
top: pointer.y - 20,
width: 52,
height: 52,
scale: 0.1
});
//canvas.clear();
canvas.add(img);
canvas.renderAll();
});
}
}
});
对正在发生的事情有什么想法吗?
编辑:
我使用了常规 fabric.js 而不是缩小版本,错误是:
TypeError: event is undefined
我知道出了什么问题。我没有将事件传递给 getPointer() 函数。
这段代码现在可以正常工作了:
$('#scene').droppable({
drop: function(e, ui) {
if ($(e.target).attr('id') === 'scene') {
var pointer = canvas.getPointer(e);
fabric.Image.fromURL(ui.draggable[0].currentSrc, function (img) {
img.filters.push(new fabric.Image.filters.Resize({scaleX: 0.2, scaleY: 0.2}));
img.set({
left: pointer.x - 20,
top: pointer.y - 20,
width: 52,
height: 52
});
canvas.clear();
canvas.add(img);
canvas.renderAll();
});
}
}
});