首页 > 编程语言 >JavaScript 获取和设置剪贴板中的内容

JavaScript 获取和设置剪贴板中的内容

时间:2022-10-29 18:45:19浏览次数:78  
标签:剪贴板 console log text JavaScript 获取 error input

通过 JavaScript 在浏览器中获取或设置剪贴板中的内容,常用于一键复制或使用网页油猴复制限制文本

使用 execCommand (已弃用)

写入文本到剪贴板

document.onclick = function() {
  let text = 'hello world'
  let dom_input = document.createElement('input')
  dom_input.value = text
  document.body.appendChild(dom_input)
  dom_input.select()
  document.execCommand("Copy")
  dom_input.parentElement.removeChild(dom_input)
}

注意

用户和页面要先有交互(点击行为)才能复制成功

使用 clipboard (标准推荐)

提示

使用 clipboard 只能获取剪贴板中的文字和图片,并且需要用户授权,某些操作需要有用户交互(点击行为)

从剪贴板读取文本

navigator.clipboard.readText().then((text) => {
  console.log(text)
}, (error) => { console.log(error) })

从剪贴板读取文件

document.onclick = function() {
  navigator.clipboard.read().then((file_list) => {
    for(let item of file_list) {
      for(let file_type of item.types) {
        console.log('文件类型', file_type)
        item.getType(file_type).then(res => {
          if(['text/html', 'text/plain'].includes(file_type)) {
            res.text().then(text => {
              console.log(text)
            }, (error) => { console.log(error) })
          } else {
            open(URL.createObjectURL(res))
          }
        }, (error) => { console.log(error) })
      }
    }
  }, (error) => { console.log(error) })
}

写入文本到剪贴板

navigator.clipboard.writeText('hello world').then(function() {
  console.log('success')
}, function(error) { console.log(error)} )

写入文件到剪贴板

let input = document.createElement('input')
input.type = 'file'
document.body.appendChild(input)
input.onchange = function(ev) {
  let f = ev.target.files[0]
  let item = [ new ClipboardItem({ 'image/png': new Blob([f], {type: 'image/png'}) }) ] // 写入图片
  let text = [ new ClipboardItem({ 'text/plain': new Blob(['hello world'], {type: 'text/plain'}) }) ] // 写入文本
  navigator.clipboard.write(item).then(function() {
    console.log('success')
  }, function(error) { console.log(error) })
}

注意

以上代码均在 Chrome 107.0.5304.88 测试通过,但不能保证其他浏览器也能用,其中 ```clipboard.write()``` 存在 bug 不建议使用。

标签:剪贴板,console,log,text,JavaScript,获取,error,input
From: https://www.cnblogs.com/adore/p/16831987.html

相关文章

  • 3.3 使用Python打开Excel文件_获取一系列单元格的内容
    3.获取一系列格式sheet[‘A1:A5’]   sheet[‘A’]     sheet[‘A:C’]    sheet[5]4.指定行和列的范围,按行获取,按列获取.iter_rows(min_row=最低行数,max......
  • JavaScriptDOM操作的性能优化
    浏览器的重排和重绘是比较消耗性能的操作,所以网页性能优化的手段就是减少重排和重绘的操作。比如:多次更改样式的操作合并为一次操作我们在JavaScript中修改样式,比如:constch......
  • python系列:远程SSH登录并执行命令,获取结果
    需求:机器A上执行Python代码登录连接到机器B,然后在机器B上执行命令实现#!/usr/bin/envpython#coding=utf-8importparamiko,getpass,sys,tracebackclasssshDemo():def......
  • 3.2 使用Python打开Excel文件_获取指定单元格的内容
    Python打开及读取Excel表格内容1.打开和读取表格数据  打开工作薄    load_workbook(文件名)  获取工作表     workbook[sheet名称]    ......
  • Javascript学习随笔
    JavaScript:简称JS,是一个运行在客户端/浏览器的【解释性】【弱类型】【面向对象】脚本语言。想要运行js需要运行环境:浏览器自带js解释器node.js需要安装环境编译型:在......
  • JavaScript
    什么是JavaScript概述JavaScript是一门世界上最流行的脚本语言Java、JavaScript一个合格的后端人员,必须要精通JavaScript历史https://blog.csdn.net/kese7952/arti......
  • 获取指定容器的最新版tag
    例子:获取docker.io/jingjingxyk/nginx容器的最新tag#!/bin/bashset-eux__DIR__=$(cd"$(dirname"$0")";pwd)cd${__DIR__}#安装jq,解析jsontest$(whichjq|......
  • 根据用户的请求ip地址获取天气(对接高德地图api)
    1、获取请求的ip地址(高德地图api)packagecom.yami.shop.common.util;importlombok.extern.slf4j.Slf4j;importjavax.servlet.http.HttpServletRequest;importj......
  • Map之“获取map中的key流转为List”
    一.获取map中的key转为List注意这里可以获取map中所有的key来转换为List,这样后很多方案就不需要另外查询出来处理了代码@Testpublicvoidtest(){......
  • 【笔记05】Javascript - 基本概念 - (函数递归)
    先看一个试题: 求n的阶乘通常,我们会写:functionfac(num){varres=1;for(vari=1;i<=num;i++){res*=i;}returnres;}观察阶乘可以发现两个特点:特点一:......