Skip to content

Clipboard Api

剪贴板 Clipboard API 为 Navigator 接口添加了只读属性 clipboard,该属性返回一个可以读写剪切板内容Clipboard 对象。 在 Web 应用中,剪切板 API 可用于实现剪切、复制、粘贴的功能。

1.实例方法

Clipboard Api的实例方法在navigator.clipboard对象上

read()

作用请求获取剪贴板内容,在解析承诺时将数据传递给返回的 Promise

  • readText() 不同,该方法可以返回任意数据,例如图像。

语法

js
var promise = navigator.clipboard.read();

readText()

作用:解析系统剪贴板的文本内容返回一个Promise

  • 当剪切板有东西时,浏览器会首先请求获取剪切板内容
html
<div class="box"></div>
<script>
    const box = document.querySelector(".box");
    const p = navigator.clipboard.readText().then((res) => {
        box.innerHTML = res;
    });
</script>

write()

作用:写入图片等任意的数据到剪贴板。这个方法可以用于实现剪切和复制的功能。

返回值:当数据被写入到剪贴板的时候,Promiseresolve 回调被执行。如果剪贴板不能完成剪贴操作,Promisereject 回调被执行。

语法

js
var promise = navigator.clipboard.write(dataTransfer)

示例

js
function setClipboard(text) {
    let data = new DataTransfer();

    data.items.add("text/plain", text);
    navigator.clipboard.write(data).then(function() {
        /* success */
    }, function() {
        /* failure */
    });
}

writeText()

作用:可以写入特定字符串到操作系统的剪切板。

返回值:一个Promise,一旦剪贴板的内容被更新,它就会被解析。如果调用者没有写入剪贴板的权限,则拒绝写入剪切板(reject)

语法

js
navigator.clipboard.writeText("内容").then(function() {
  alert('复制成功')
}, function() {
  alert('复制失败')
});

2.剪切板事件

事件描述
oncopy该事件在用户拷贝元素内容时触发
oncut该事件在用户剪切元素内容时触发
onpaste该事件在用户粘贴元素内容时触发
js
document.addEventListener('copy',()=>{
    console.log('用户复制了内容')
})
document.addEventListener('cut',()=>{
    console.log('用户剪切了内容')
})
document.addEventListener('paste',()=>{
    console.log('用户粘贴了内容')
})

MIT Licensed