2

我正在使用 fabric.js 在 canvas 上创建形状。右键单击形状,我想根据所选形状显示上下文菜单。我能够捕获右键单击事件并找到右键单击完成的对象。但我不知道如何从 javascript 中显示上下文菜单(类似于 contextmenu.show)。下面是我用来查找对象的代码。任何人请帮助。

$('.upper-canvas').bind('contextmenu', function (e) {
    var objectFound = false;
    var clickPoint = new fabric.Point(e.offsetX, e.offsetY);

    e.preventDefault();

    canvas.forEachObject(function (obj) {
        if (!objectFound && obj.containsPoint(clickPoint)) {
            objectFound = true;
             // here need to set a customized context menu and show it
             // but dont now how to do so. 
        }
    });
});
4

1 回答 1

2

使用jquery-ui-contextmenu您可以在画布上实例化上下文菜单并根据目标修改菜单条目。

(请注意,代码未经测试,但它应该显示想法。请查看API 文档了解详细信息。)

$(document).contextmenu({
    delegate: ".upper-canvas",
    menu: [...],  // default menu
    beforeOpen: function (event, ui) {
        var clickPoint = new fabric.Point(event.offsetX, event.offsetY);
        // find the clicked object and re-define the menu or
        // optionally return false, to prevent opening the menu:
//      return false;
        // En/disable single entries:
        $(document).contextmenu("enableEntry", ...);
        // Show/hide single entries:
        $(document).contextmenu("showEntry", ...);
        // Redefine the whole menu:
        $(document).contextmenu("replaceMenu", ...); 
    },
    select: function(event, ui) {
        // evaluate selected entry...
    }
});
于 2016-08-05T21:34:02.060 回答