WEB 剪切板操作navigator.clipboard的使用

简介: 浏览器允许 JavaScript 脚本读写剪贴板,自动复制或粘贴内容,而这一切都是通过 navigator clipboard 的API来实现的。剪贴板可以用于存储数据并在应用程序内部或应用程序之间使用的临时空间。这些操作的 API 都是异步操作并返回一个 promise。

浏览器允许 JavaScript 脚本读写剪贴板,自动复制或粘贴内容,而这一切都是通过 navigator clipboard 的API来实现的。剪贴板可以用于存储数据并在应用程序内部或应用程序之间使用的临时空间。这些操作的 API 都是异步操作并返回一个 promise

Mime 类型

定义了数据的类型,mime 类型在写入和读取剪贴板时给出,以指示传递的数据类型。所有浏览器的导航器 API 都支持这些 mime 类型。

  • text/plain
  • text/html
  • image/png
  • text/uri-list

Api

  • navigator.clipboard.writeText:用于将文本内容写入剪贴板
  • navigator.clipboard.write:用于将任意数据写入剪贴板,可以是文本数据,也可以是二进制数据。
  • navigator.clipboard.readText :用于复制剪贴板里面的文本数据
  • navigator.clipboard.read : 用于复制剪贴板里面的数据,可以是文本数据,也可以是二进制数据(比如图片)

navigator.clipboard.writeText

用于将文本内容写入剪贴板。

支持的浏览器

Chrome、Firefox 和 Safari

代码示例
async function writeDataToClipboard() {
    const result = await navigator.clipboard.writeText("Hello");
    console.log(result);
}

navigator.clipboard.write

用于将任意数据写入剪贴板,可以是文本数据,也可以是二进制数据。

支持的浏览器

Chrome、Safari,Firefox 则需要通过使用about:config设置 asyncClipboard 标志来支持。

代码示例
async function copyImage() {
    const input = document.getElementById("file");
    const blob = new Blob(["sample 2"], { type: "text/plain" });
    const clipboardItem = new ClipboardItem({
        "text/rt": blob,
        "image/png": input.files[0],
    });
    const response = await navigator.clipboard.write([clipboardItem]);
    console.log(response);
}

当写入的 mimeType 不是文本、html 或图像时,Chrome 中会发生错误。

Safari 支持使用对 blobpromise 来创建剪贴板项,这在必须从服务器获取要写入的数据的情况下非常实用。

async function copyImage() {
    const fetchImage = ()=>{
        const input = document.getElementById("file");
        return Promise.resolve(input.files[0]);
    };
    const clipboardItem = new ClipboardItem({
        ["image/png"]:fetchImage()
    });
    const reponse = await navigator.clipboard.write([clipboardItem]);
    console.log(reponse)
}

navigator.clipboard.readText

用于复制剪贴板里面的文本数据。

代码示例
async (e) => {
    const text = await navigator.clipboard.readText();
    console.log(text);
}

navigator.clipboard.read

用于复制剪贴板里面的数据,可以是文本数据,也可以是二进制数据(比如图片),该方法需要用户明确给予许可。

错误信息
  • 读取权限被拒绝:在 navigator.clipboard.read 上有一个允许剪贴板访问的提示,如果用户在提示出现时单击阻止剪贴板访问,则会出现此错误。
  • 剪贴板上没有有效数据:当剪贴板中没有文本、html 或图像并且包含一些其他数据类型或空剪贴板时,会出现此错误。
  • 前上下文中用户代理或平台不允许该请求,可能是因为用户拒绝了权限:在 navigator.clipboard.read 上,如果剪贴板数据不是来自同一个浏览器按钮,则 Safari 中会显示一个额外的粘贴按钮。如果未单击此错误,则会引发此错误。


相关文章
|
7月前
|
开发工具 git
web后端-IDEA的Git操作
web后端-IDEA的Git操作
|
7月前
|
开发框架 前端开发 .NET
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
95 0
|
关系型数据库 MySQL Go
Golang 语言 Web 框架 beego v2 之读操作(上)
Golang 语言 Web 框架 beego v2 之读操作
82 0
|
存储 关系型数据库 MySQL
Golang 语言 Web 框架 beego v2 之写操作
Golang 语言 Web 框架 beego v2 之写操作
151 0
|
6月前
|
文字识别 前端开发 API
视觉智能开放平台产品使用合集之需要在Web端处理本地文件并上传,该如何操作
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
数据采集 Web App开发 前端开发
Selenium:自动化Web浏览器操作的强大工具
**Selenium** 是一款用于自动化Web应用测试和模拟用户行为的工具,支持多种浏览器和编程语言。安装包括安装Selenium库和对应浏览器的WebDriver。基本用法包括导入库、启动浏览器、查找与操作页面元素、等待元素加载及关闭浏览器。在实际项目中,Selenium常用于Web测试、爬虫、自动化表单填写等,优点是跨平台、模拟真实用户行为,但性能较低且依赖浏览器。
280 9
|
6月前
|
机器学习/深度学习 人工智能 Apache
人工智能平台PAI操作报错合集之alink任务可以在本地运行,上传到flink web运行就报错,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
前端开发 计算机视觉
视觉智能开放平台操作报错合集之人脸对比1:1,采用web前端直接调用,使用了base64处理图片,提示http错误码414,该如何处理
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
|
6月前
|
前端开发 程序员 API
视觉智能开放平台产品使用合集之web前端拉起人脸识别该如何操作
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
7月前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
79 2
下一篇
DataWorks