web工具函数系列-拷贝文字到粘贴板

187 阅读1分钟

场景

面试官:请实现一个将字符串粘贴到粘贴板
小A:啥?粘贴板,之前都是用库诶,没怎么了解,要不你提示下? 面试官:那好吧......

思路

  1. 先建立一个textarea的dom,并且将str填写到value; 并且将其选中
  2. 执行copy命令
  3. 将选中内容添加到selection中

解题代码

const copyToClipboard = str => {
  const el = document.createElement('textarea')
  el.value = str
  el.setAttribute('readonly''')
  el.style.position = 'absolute'
  el.style.left = '-9999px'
  document.body.appendChild(el)
  const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false
  el.select()
  document.execCommand('copy')
  document.body.removeChild(el)
  if(selected) {
    document.getSelection().removeAllRanges()
    document.getSelection().addRange(selected)
  }
}

心得

小A:其实如果之前了解document.execCommand,document.getSelection()这些API可能还是不难的
客观角度:

  1. 其实我觉得不一定会考
  2. 如果是编辑器领域可能会考,因为编辑器领域对execCommand和getSelection这些API了解一点也不过分
  3. 其实整个题目做完会发现,并不是特别难,思路比较清晰即可