I am placing Text, Image and Shapes on canvas using Fabric.js. I have made Three different Edit-Panels for all three. When user select text I want to show text panel. like wise for image and shapes.
How to identify type of selected Object?
canvas.getActiveObject().get('type') as simmi simmi said is correct. You can also listen to events:
function onObjectSelected(e) {
console.log(e.target.get('type'));
}
canvas.on('object:selected', onObjectSelected);
I solved this issue using following code::
if(canvas.getActiveObject().get('type')==="text")
{
//Display text panel
console.log('text panel Displayed');
$("#Image_left_panel").css("display", "none");
$("#shape_left_panel").css("display", "none");
//$("#left_panel").css("display", "block");
}
else if(canvas.getActiveObject().get('type')==="Image")
{
//Display Image Panel
console.log('Image Panel Displayed');
$("#Image_left_panel").css("display", "block");
$("#shape_left_panel").css("display", "none");
$("#left_panel").css("display", "none");
}
else
{
}
});
Renon Stewart
Try isType()
Sample function for getting selected objects
function onObjectSelected(o){
//activeObject = canvas.getActiveObject()
activeObject = o.target;
if(activeObject.isType('text')){
//display text logic
}
else if(activeObject.isType('image')){
//display image
}
else if( activeObject.isType('xyz')){
//display shape logic
}
}
canvas.on('object:selected', onObjectSelected);
In fabricjs 3.4, to get the object type, just use:
var objType = canvas.getActiveObject().type;
On IText object, the above will return: i-text
On image, it will return: image
function onObjectSelected() {
// check if type is a property of active element
var objType = (canvas.getActiveObject().type ? canvas.getActiveObject().type : "");
// your code
}
canvas.on('object:selected', onObjectSelected);
来源:https://stackoverflow.com/questions/18893468/how-to-identify-the-type-of-a-selected-object