场景
面试官:请实现一个将字符串粘贴到粘贴板
小A:啥?粘贴板,之前都是用库诶,没怎么了解,要不你提示下?
面试官:那好吧......
思路
- 先建立一个textarea的dom,并且将str填写到value; 并且将其选中
- 执行copy命令
- 将选中内容添加到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可能还是不难的
客观角度:
- 其实我觉得不一定会考
- 如果是编辑器领域可能会考,因为编辑器领域对execCommand和getSelection这些API了解一点也不过分
- 其实整个题目做完会发现,并不是特别难,思路比较清晰即可