Xin's blog Xin's blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

Xin

英雄可不能临阵脱逃啊~
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • HTML

  • CSS

  • JavaScript

    • 知识点

      • new命令原理
      • ES5面向对象
      • ES6面向对象
      • 多种数组去重性能对比
      • 比typeof运算符更准确的类型判断
      • 可选链操作符
      • 三点运算符
      • cookies,sessionStorage和localStorage的区别?
      • forEach()函数究竟会不会修改原数组?
      • 宏任务与微任务
      • Promise实现原理
      • this指向
      • 递归函数返回undefined
      • 使用JS的FileReader对象读取blob对象二进制数据
      • clipboard 剪切板属性
        • navigator.clipboard
        • 模拟复制、粘贴、剪切功能
        • 参考文献
    • 方法

  • Vue

  • 组件与插件

  • css扩展语言

  • 学习笔记

  • 前端
  • JavaScript
  • 知识点
ctrlwin
2022-05-26

clipboard 剪切板属性

# clipboard 剪切板属性

# navigator.clipboard

navigator.clipboard属性用于访问系统剪切板(不兼容IE)。

js另一个属性document.execCommand()也可以访问系统剪切板,不过即将被废弃。

部分浏览器在使用Clipboard API时,会弹出用户授权弹窗,如果没有授权则不允许读取或修改剪切板内容。

常用方法:

  • readText()

    • 用于读取系统剪切板内容并返回一个promise对象

    • var promise = navigator.clipboard.readText()
      
      1
  • writeText()

    • 用于想系统剪切板写入指定字符串并返回一个promise对象

    • var promise = navigator.clipboard.writeText(text)
      
      1

# 模拟复制、粘贴、剪切功能

代码实现:

<div class="test-clipboard">
  <div><input type="text" id="clipboard-input" /></div>
  <button onclick="copy()">复制</button>
  <button onclick="paste()">粘贴</button>
  <button onclick="clip()">剪切</button>
</div>
1
2
3
4
5
6
const input = document.getElementById('clipboard-input')
const clipboard = navigator.clipboard

// 判断输入框是否为空
function checkinput() {
  if (!input.value) {
    alert("请先输入内容!");
  }
  return !!input.value
}

// 复制
function copy() {
  let valid = checkinput()
  if (valid) {
    clipboard.writeText(input.value).then(() => {
      alert('复制成功!');
    })
  }
}

// 剪切
function clip() {
  let valid = checkinput()
  if (valid) {
    clipboard.writeText(input.value).then(() => {
      input.value = ""
      alert('剪切成功!');
    })
  }
}

// 粘贴
function paste() {
  clipboard.readText().then((res) => {
    input.value += res
  })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

预览(如果没有效果,可点击前往codepen预览):

# 参考文献

js【剪切、复制、粘贴】功能实现 (opens new window)

MDN Clipboard API (opens new window)

在GitHub上编辑 (opens new window)
#js
上次更新: 5/27/2022, 4:57:31 PM

← 使用JS的FileReader对象读取blob对象二进制数据 js能力提升1→

最近更新
01
createElement函数创建虚拟DOM
05-26
02
vue的权限管理
05-16
03
给按钮加上权限校验后导致v-if失效的问题
04-20
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Xin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×