剪贴板操作

前言

本文介绍剪贴板相关的 API 以及实现文本处理效果.

Clipboard API

1. 复制文本到剪贴板

要复制文本到剪贴板,我们可以使用 writeText()方法。

const copyToClipboard = async (text) => {
  try {
    await navigator.clipboard.writeText(text);
    console.log("已成功复制到剪贴板:", text);
  } catch (err) {
    console.error("复制失败:", err);
  }
};

// 使用示例
const textToCopy = "你好,剪贴板API!";
copyToClipboard(textToCopy);

2. 从剪贴板中读取文本

要从剪贴板中读取文本,我们可以使用readText()方法

const readFromClipboard = async () => {
  try {
    const clipboardText = await navigator.clipboard.readText();
    console.log('从剪贴板读取的内容:', clipboardText);
  } catch (err) {
    console.error('读取剪贴板内容失败:', err);
  }
};

// 使用示例
readFromClipboard();

实际运用案例

1. 复制添加版权信息

在线效果预览

function handleCopyEvent(event) {
  // 获取选中的文本
  const selection = window.getSelection();
  const selectedText = selection.toString();

  // 添加版权文本
  const copyrightText = "\n\n@版权归鲁迅所有";
  const modifiedText = selectedText + copyrightText;

  // 使用Clipboard API复制修改后的文本
  event.clipboardData.setData("text/plain", modifiedText);

  // 阻止默认的复制操作
  event.preventDefault();
}

// 为文档添加复制事件监听器
document.addEventListener("copy", handleCopyEvent);

2.登录表单去除空格示例

在线效果预览

function handlePasteEvent(event) {
  // 从剪贴板获取粘贴的文本
  const pastedText = event.clipboardData.getData("text/plain");

  // 去除粘贴的文本中的前导和尾随空格
  const trimmedText = pastedText.trim();

  // 阻止默认的粘贴行为
  event.preventDefault();

  // 在输入框中插入去除空格后的文本
  const input = event.target;
  const startPosition = input.selectionStart;
  const endPosition = input.selectionEnd;
  const currentValue = input.value;
  const newValue =
    currentValue.slice(0, startPosition) +
    trimmedText +
    currentValue.slice(endPosition);
  input.value = newValue;

  // 设置新的光标位置,以便保持焦点位置
  const newSelectionPosition = startPosition + trimmedText.length;
  input.setSelectionRange(newSelectionPosition, newSelectionPosition);
}

// 为电子邮件和密码输入框添加粘贴事件监听器
const emailInput = document.getElementById("email");
emailInput.addEventListener("paste", handlePasteEvent);

const passwordInput = document.getElementById("password");
passwordInput.addEventListener("paste", handlePasteEvent);

更多

  • Clipboard 还支持更多的 MIME type, 还可以自定义类型, 功能很强大。
  • 在处理富文本的复制粘贴时,由于不同软件之间的自定义格式,导致需要很多额外的工作量取做兼容

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值