要在JavaScript中自定义右键菜单并实现复制和粘贴功能,可以使用contextmenu事件和document.execCommand()方法。

首先,通过监听contextmenu事件来阻止默认的右键菜单的弹出:

document.addEventListener('contextmenu', function(event) {
  event.preventDefault();
});

然后,创建一个自定义的右键菜单,并将其添加到页面中:

var contextMenu = document.createElement('div');
contextMenu.id = 'customContextMenu';
contextMenu.style.display = 'none';
// 添加菜单项...
document.body.appendChild(contextMenu);

接下来,为菜单项添加点击事件,并在点击时执行相应的操作:

var copyMenuItem = document.createElement('div');
copyMenuItem.innerText = '复制';
copyMenuItem.addEventListener('click', function() {
  document.execCommand('copy');
  // 执行复制操作
});
contextMenu.appendChild(copyMenuItem);

var pasteMenuItem = document.createElement('div');
pasteMenuItem.innerText = '粘贴';
pasteMenuItem.addEventListener('click', function() {
  document.execCommand('paste');
  // 执行粘贴操作
});
contextMenu.appendChild(pasteMenuItem);

最后,通过监听mousedown事件来判断是否右键点击,并在右键点击时显示自定义菜单:

document.addEventListener('mousedown', function(event) {
  if (event.button === 2) {
    contextMenu.style.display = 'block';
    contextMenu.style.left = event.pageX + 'px';
    contextMenu.style.top = event.pageY + 'px';
  } else {
    contextMenu.style.display = 'none';
  }
});

完整的代码如下:

document.addEventListener('contextmenu', function(event) {
  event.preventDefault();
});

var contextMenu = document.createElement('div');
contextMenu.id = 'customContextMenu';
contextMenu.style.display = 'none';

var copyMenuItem = document.createElement('div');
copyMenuItem.innerText = '复制';
copyMenuItem.addEventListener('click', function() {
  document.execCommand('copy');
  // 执行复制操作
});
contextMenu.appendChild(copyMenuItem);

var pasteMenuItem = document.createElement('div');
pasteMenuItem.innerText = '粘贴';
pasteMenuItem.addEventListener('click', function() {
  document.execCommand('paste');
  // 执行粘贴操作
});
contextMenu.appendChild(pasteMenuItem);

document.body.appendChild(contextMenu);

document.addEventListener('mousedown', function(event) {
  if (event.button === 2) {
    contextMenu.style.display = 'block';
    contextMenu.style.left = event.pageX + 'px';
    contextMenu.style.top = event.pageY + 'px';
  } else {
    contextMenu.style.display = 'none';
  }
});

请注意,document.execCommand()方法的兼容性有限,不同浏览器对不同命令的支持情况也不同。在实际使用中,可能需要根据浏览器的不同来使用不同的方法来实现复制和粘贴功能

js 自定义右键实现复制粘贴

原文地址: http://www.cveoy.top/t/topic/ieVI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录