提问者:小点点

可手持上下文菜单粘贴第一次不起作用


上下文菜单仅在使用ctrl v后才起作用。否则它只会返回空的剪贴板,这让我觉得需要一些初始化,或者只需关注/选择textarea。我错过什么了吗?谢谢

编辑

从excel文件复制并粘贴到Handsontable网格。如果我将粘贴与ctrl V一切都好。之后,粘贴与快捷方式和通过上下文菜单的工作预期。但是如果在初始化后,我会尝试使用我的contex菜单粘贴它将不粘贴任何东西。直到我通过快捷方式粘贴。

并使用ctrl v粘贴到handsontable,然后也可以使用关联菜单进行粘贴。在控制台上,您将看到

但若重新启动并尝试使用上下文菜单粘贴,它将不会粘贴任何内容,在控制台上您将看到

i、 e.一个元素而不是四个元素,要粘贴的值为“”。所以区别在于你没有使用快捷方式。那么这些准备好了吗?

attached(element) {
    this._grid = this.initializeGrid($(element).find(".inputGrid")[0], this.options);
}

private initializeGrid(element, options) {
    var config: any = {
        data: options.data(),
        colHeaders: options.columns.map(c => c['title'] || c.data),
        columns: options.columns,
        contextMenu: {
            items: { "copy": { name: "copy Ctrl+C" }, "paste": { name: "paste Ctrl+V" }, "hsep1": "---------", "row_above": {}, "row_below": {}, "remove_row": {} }
        },
        contextMenuCopyPaste: true,
        minSpareRows: 1,
        rowHeaders: true,
        allowInsertColumn: false,
        allowInvalid: false,
        allowRemoveColumn: false,
        manualRowMove: true,
        autoWrapRow: true,
        fillHandle: false,
        stretchH: 'all',
        height: '100%'
    };

    var grid = new Handsontable(element, config);

    var subscrRefresh = options.data.subscribe(() => {
        grid.updateSettings({});
        grid.render();
    });

共1个答案

匿名用户

您可能缺少ZeroClipboard的外部文件。只需下载并设置它们。以下是文档中的直接文本:

请注意,我们的复制/粘贴上下文菜单插件需要一些额外的准备工作:

>

  • zero剪贴板。js必须存在于服务器上,并包含在网站的脚本标记中。

    ZeroClipboard.swf也必须存在于您的服务器上要配置Handsontable以使用此插件,您需要向Hansontable实例添加一个ContextMenuCopyPati配置项。

    它可以设置为:

    • true-如果为零。swf文件与零剪贴板放在同一目录中。js