Javascript:如何使用复制/粘贴选项制作自定义上下文菜单

时间:2017-01-24 09:43:23

标签: javascript

我们正在为我们的在线文本编辑器制作自定义上下文菜单。内部有复制/粘贴选项是唯一的性质。但是我们发现从浏览器中访问系统剪贴板很困难。几年前似乎不可能:Custom Context Menu with Javascript?

尽管如此,google设法在谷歌文档中完成了这项工作,没有闪存或特殊插件的帮助,据我所知,它在Chrome和Firefox中都有效。我想知道他们用什么来达到这个目的?

enter image description here

3 个答案:

答案 0 :(得分:1)

经过一些更多的研究,我认为该功能在Chrome中有效,但在firefox中却没有(我的问题中的错误)。弹出窗口将显示指示用户使用快捷方式: A Dialog showing incompatibility with browsers suggesting key shortcuts be used as a workaround, for a mac

因此Google似乎使用Google Docs Offline扩展程序来提供此功能。如果分机已停用,则会提示您安装Google云端硬盘应用。

很遗憾,没有通用的解决办法。

以下对话已有几年历史,但仍然有道理:

How to paste on click? It works in google docs

javascript cut/copy/paste to clipboard: how did Google solve it?

Adding copy & paste functionalities to a custom menu of a webapp

答案 1 :(得分:0)

要渲染菜单,您可以收听右键单击触发的上下文菜单事件。然后,您可以渲染自定义菜单。

复制/粘贴等可能是使用document.execCommand()完成的,可以用来触发复制/粘贴等。检查浏览器以查看支持哪些命令。

https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand

// on right click, copy to clipboard.
document.querySelector('body').addEventListener('contextmenu', function( event ) {
    // prevent the normal context menu from popping up
    event.preventDefault();
    // copy current selection
    document.execCommand('copy');
});

答案 2 :(得分:0)

鼠标按下时带有粘贴命令的

按钮

if (document.addEventListener) {
    document.addEventListener('copy', function (ev) {
      ev.clipboardData.setData('text/plain', window.getSelection());
      ev.preventDefault();
  });
}

这应该适用于大多数浏览器。