监听键盘ctrl+c ctrl+v
area.onkeydown = (event) => {if (event.ctrlKey) {if (event.keyCode == 67) {alert('ctrl+c复制')event.keyCode = 0;}if (event.keyCode == 86) {alert('ctrl+v粘贴')}}};
监听浏览器右键复制粘贴
let isRight = false;area.onmousedown = (event) => {// 右键event = window.event || event;if (event.button == 2) {isRight = true;}};area.oncopy = () => {// 监听浏览器复制事件if (isRight == true) {alert('右键复制')isRight=false}};area.onpaste = () => {// 监听浏览器粘贴事件if (isRight == true) {alert('右键粘贴')isRight=false}}
area是获取的文本域的节点,必须是dom的真实节点
手写一个复制到剪切板的方法
export default function copyToClipboard(text) {let textArea = document.createElement("textarea");textArea.style.position = "fixed";textArea.style.top = "0";textArea.style.left = "0";textArea.style.width = "2em";textArea.style.height = "2em";textArea.style.padding = "0";textArea.style.border = "none";textArea.style.outline = "none";textArea.style.boxShadow = "none";textArea.style.background = "transparent";textArea.value = text;document.body.appendChild(textArea);textArea.select();try {let successful = document.execCommand("copy");let msg = successful? "成功复制到剪贴板": "该浏览器不支持点击复制到剪贴板";alert(msg);} catch (err) {alert("该浏览器不支持点击复制到剪贴板");}document.body.removeChild(textArea);}