如何在 FabricJS 中为 IText 对象添加按键监听器?
How to add key press listener for IText objects in FabricJS?
我目前有这个代码
fabric.IText.prototype.keysMap[13] = 'onEnterKeyPress';
fabric.IText.prototype.onEnterKeyPress = (e) => {
console.log('onEnterKeyPress', e);
// this.insertChars(e);
// fabric.IText.insertChars(e);
// return true;
// return e;
};
let canvas = new fabric.Canvas('canvas', {
preserveObjectStacking: true,
width: 980,
height: 600
});
let itext = new fabric.IText(
'Edit this text',
{
editable: true,
left: 100,
top: 100,
fontSize: 24
}
);
canvas.add(itext);
canvas.requestRenderAll();
<html>
<body>
<canvas id="canvas"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.min.js"></script>
</body>
</html>
问题是,一旦我附加了按键侦听器,如果我按下回车键,它确实会触发我的函数回调,但它不会在文本中添加回车 return 字符。
如果我删除按键侦听器,它会恢复正常,即在回车键上添加回车 return 字符。
似乎我必须在附加按键侦听器时手动添加回车return?不知道该怎么做。
提前致谢。
顺便说一句,我正在使用最新的 FabricJS 2.3.4
您可以覆盖 onKeyDown
,然后调用原始方法。
演示*
fabric.IText.prototype.onKeyDown = (function(onKeyDown) {
return function(e) {
if (e.keyCode == 13)
console.log('enter key');
onKeyDown.call(this, e);
}
})(fabric.IText.prototype.onKeyDown)
let canvas = new fabric.Canvas('canvas', {
preserveObjectStacking: true,
width: 980,
height: 600
});
let itext = new fabric.IText(
'Edit this text', {
editable: true,
left: 100,
top: 100,
fontSize: 24
}
);
canvas.add(itext);
canvas.requestRenderAll();
<html>
<body>
<canvas id="canvas"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.js"></script>
</body>
</html>
我目前有这个代码
fabric.IText.prototype.keysMap[13] = 'onEnterKeyPress';
fabric.IText.prototype.onEnterKeyPress = (e) => {
console.log('onEnterKeyPress', e);
// this.insertChars(e);
// fabric.IText.insertChars(e);
// return true;
// return e;
};
let canvas = new fabric.Canvas('canvas', {
preserveObjectStacking: true,
width: 980,
height: 600
});
let itext = new fabric.IText(
'Edit this text',
{
editable: true,
left: 100,
top: 100,
fontSize: 24
}
);
canvas.add(itext);
canvas.requestRenderAll();
<html>
<body>
<canvas id="canvas"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.min.js"></script>
</body>
</html>
问题是,一旦我附加了按键侦听器,如果我按下回车键,它确实会触发我的函数回调,但它不会在文本中添加回车 return 字符。
如果我删除按键侦听器,它会恢复正常,即在回车键上添加回车 return 字符。
似乎我必须在附加按键侦听器时手动添加回车return?不知道该怎么做。
提前致谢。
顺便说一句,我正在使用最新的 FabricJS 2.3.4
您可以覆盖 onKeyDown
,然后调用原始方法。
演示*
fabric.IText.prototype.onKeyDown = (function(onKeyDown) {
return function(e) {
if (e.keyCode == 13)
console.log('enter key');
onKeyDown.call(this, e);
}
})(fabric.IText.prototype.onKeyDown)
let canvas = new fabric.Canvas('canvas', {
preserveObjectStacking: true,
width: 980,
height: 600
});
let itext = new fabric.IText(
'Edit this text', {
editable: true,
left: 100,
top: 100,
fontSize: 24
}
);
canvas.add(itext);
canvas.requestRenderAll();
<html>
<body>
<canvas id="canvas"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.js"></script>
</body>
</html>