【问题标题】:Handsontable context menu paste not working first timeHandsontable 上下文菜单粘贴第一次不起作用
【发布时间】:2016-02-08 04:53:45
【问题描述】:

上下文菜单仅在使用 ctrl+v 后才有效。否则它只会返回空剪贴板,这让我认为需要一些初始化,或者只是将焦点/选择放在 textarea 上。我错过了什么吗?谢谢。

编辑

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

编辑 2 http://jsfiddle.net/sauliuslx/ygfnR/341/ 如果你像那样从 excel 中复制

然后用 ctrl+v 粘贴到handsontable 然后你也可以用上下文菜单粘贴。在控制台上你会看到

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

即一个元素而不是四个元素,要粘贴的值是“”。所以不同的是你没有使用快捷方式。所以这些都准备好了?

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();
    });

【问题讨论】:

  • 你能给我们看一些代码吗?从哪里复制什么?
  • @ZekeDroid 我添加了初始化代码。谢谢。
  • 我似乎无法重新创建它。你能在发生错误的地方发布一个 jsfiddle 吗?你有机会使用 IE 吗?
  • @ZekeDroid 我添加了 jsfiddle。我使用 Chrome 46。谢谢。

标签: javascript handsontable


【解决方案1】:

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

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

  1. ZeroClipboard.js 必须存在于您的服务器上并包含在您网站的script 标记中。

  2. ZeroClipboard.swf 也必须出现在您的服务器上 要配置 Handsontable 以使用此插件,您需要将 contextMenuCopyPaste 配置项添加到您的 Hansontable 实例。

可以设置为:

  • true - 如果ZeroClipboard.swf 文件与ZeroClipboard.js 放在同一目录中,或者
  • {swfPath: [path to the swf file]}

【讨论】:

  • @ZakeDroid 感谢您的回答。这似乎都是合乎逻辑的。我在 jsfiddle jsfiddle.net/ygfnR/345 上尝试了这个解决方案。因为像 jsfiddle 这样的框架网站上的 swf 限制它不起作用,所以我这样尝试过。 jsfiddle.net/sauliuslx/k9psq1da/117/show jsfiddle.net/sauliuslx/k9psq1da/117 它可能应该工作。但事实并非如此。我也在我的网站上尝试过,但我也没有成功。
  • 嗯,那很奇怪。此时您应该将其作为错误提交到 github 问题页面,因为它没有任何意义。您可能仍然会得到路径错误或没有正确加载 zeroclipboard。
  • 我在 chrome 调试器网络上看到了这两个文件(js 和 swf)。并且没有错误。我猜铬可能会抑制闪光灯。但是是的,奇怪的是我没有发现任何抱怨。
  • 我只是尝试使用上下文菜单从网格复制到同一个网格。从一开始就没有问题。
猜你喜欢
  • 2014-03-18
  • 1970-01-01
  • 2019-08-23
  • 2012-08-18
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多