原生js实现将图片内容复制到剪贴板

news2025/2/4 3:51:21

 


核心代码

/*复制图片*/
copyImg(dom) {
    /* 警告:dom不能是img标签,建议用DIV标签包裹img标签,否者会报错!不支持复制背景图! */
    dom.style.userSelect = 'auto';
    let selection = getSelection(), range = document.createRange();
    selection.removeAllRanges(), range.selectNodeContents(dom), selection.addRange
(range), document.execCommand('copy'), selection.removeAllRanges();
},

用例

<template>
    <div>
        <div ref="img">
            <img
                src="https://gips2.baidu.com/it/u=1070828945,3304149431&fm=3028&app=3028&f=PNG&fmt=auto&q=75&size=f150_150">
        </div>
        <el-input v-model.trim="inputValue" placeholder="请输入内容" clearable />
        <el-button type="primary" @click="copyImg($refs.img)">复制图片</el-button>
    </div>
</template>
    
<script>
export default {
    data() { return { inputValue: '', } },
    methods: {
        /*复制图片*/
        copyImg(dom) {
            /* 警告:dom不能是img标签,建议用DIV标签包裹img标签,否者会报错!不支持复制背景图! */
            dom.style.userSelect = 'auto';
            let selection = getSelection(), range = document.createRange();
            selection.removeAllRanges(), range.selectNodeContents(dom), selection.addRange(range), document.execCommand('copy'), selection.removeAllRanges();
        },
    }
};
</script> 

扩展用法(自定义复制成功提示文本+弹窗方式)

/*复制图片*/
copyImg(dom, isAlert, successMsg = '') {
    /* 警告:dom不能是img标签,建议用DIV标签包裹img标签,否者会报错!不支持复制背景图! */
    dom.style.userSelect = 'auto';
    let selection = getSelection(), range = document.createRange();
    selection.removeAllRanges(), range.selectNodeContents(dom), selection.addRange
        (range), document.execCommand('copy'), selection.removeAllRanges();
    if (isAlert) {
        if (typeof isAlert === "function") {
            isAlert(successMsg || "图片复制成功");
        } else {
            Message.success(successMsg || "图片复制成功");
        }
    }
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AT89C52单片机项目】数字密码锁设计

实验目的 使用单片机设计数字密码锁。 实验仪器 一套STC89C52RC开发板套件&#xff0c;包括STC89C52RC开发板&#xff0c;以及USB烧录线。 设计要求 1、有设置密码、开锁工作模式&#xff1b; 2、可以每次都设置密码&#xff0c;也可以设置一次密码多次使用。 实验原理 …

JS加密之JS基础大考验

JS加密之JS基础大考验 工欲利其器 必先善其事 JavaScript&#xff08;简称JS&#xff09;是一种高级、动态、弱类型的编程语言&#xff0c;主要用于前端网页开发&#xff0c;但也可用于后端服务器开发&#xff08;通过Node.js&#xff09;。下面是JavaScript的一些特点&#…

windows 安装Vcenter6.7避坑指南

1、推荐windows server 2016。第一次选择windows 2019会出现很多错误 2、内存要求&#xff1a;8G以上 3、如果安装了VMtools&#xff0c;则需要把VCC全部卸载了&#xff08;控制面板-->卸载程序&#xff09;

【Linux初阶】基础IO - 软硬链接 | 初识、理解、应用 文件acm时间

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;初识软硬链接&#xff0c;软硬链接的区别&#xff0c;理解软硬链接&#xff0c;软硬链接的应用&#xff0c;文…

Access简单应用

不说废话,直入正题. 关于Access的用法 一开始大家想用添加数据快速生成sql语句,其实在这里 java链接Access数据库需要ODBC连接池 机器jar包 ODBC连接池在 首次添加需要配置如上图所示,jar包链接在下面,直接放到项目下即可 UCanAccess - Browse Files at SourceForge.net下载…

前端学习记录~2023.7.13~CSS杂记 Day6

前言一、基本文字和字体样式1、CSS 中的文字样式涉及什么2、字体&#xff08;1&#xff09;颜色&#xff08;2&#xff09;字体种类a. 网络安全字体b. 默认字体c. 字体栈 &#xff08;3&#xff09;字体大小&#xff08;4&#xff09;字体样式&#xff08;5&#xff09;字体粗细…

基于SpringBoot+vue的交流互动系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

C语言strcmp()函数学习

strcmp函数是string compare(字符串比较)的缩写&#xff0c;用于比较两个字符串并根据比较结果返回整数&#xff1b; strcmp(str1,str2)&#xff1b; 若str1str2&#xff0c;则返回零&#xff1b;若str1<str2&#xff0c;则返回负数&#xff1b;若str1>str2&#xff0c;则…

尚硅谷--Vue从入门到精通

尚硅谷–Vue从入门到精通 第1章&#xff1a;Vue核心 1.1 Vue简介 1.1.1 Vue是什么&#xff1f; 一套用于构建用户界面的渐进式JS框架。 1.1.2 谁开发的&#xff1f; ——尤雨溪。 2015-10-27 正式发布 Vue1.0.0 Evangelion&#xff08;新世纪福音战士&#xff09;2016-1…

【PythonBA】商业分析:Business Analytics 的理解

猛戳订阅&#xff01; &#x1f449; 《一起玩蛇》&#x1f40d; &#x1f4dc; 本章目录&#xff1a; Ⅰ. BA 的基础概念 0x00 什么是商业分析&#xff08;Business Analytics&#xff09; 0x01 Explain 和 Predict 0x02 如何去进行分析&#xff1f; 0x03 Python 数据分…

Flutter加载Html

Flutter_Fai_Webview 插件可实现的功能&#xff1a; 同时适配于 Android Ios 两个平台通过 url 来加载渲染一个Html 页面加载 Html 文本数据 如 <html> .... </html>等加载 Html 标签数据 如 <p> ... </p>实现 WebView 加载完成后&#xff0c;自动测量…

【报错】Failed to determine a suitable driver class

文章目录 是否需要mybatis依赖&#xff1a;不需要排除resources未编译 报错信息 *************************** APPLICATION FAILED TO START ***************************Description:Failed to configure a DataSource: url attribute is not specified and no embedded datas…

Python实现HBA混合蝙蝠智能算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

【2023江西省研究生数学建模竞赛】第三题 植物的多样性 48页论文及Python代码

【2023江西省研究生数学建模竞赛】第三题 植物的多样性 48页论文及Python代码 相关链接 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【2…

IntelliJ IDEA 2023.2 新版本即将发布,拥抱 AI

IntelliJ IDEA 近期连续发布多个EAP版本&#xff0c;官方在对用户体验不断优化的同时&#xff0c;也新增了一些不错的功能&#xff0c;尤其是人工智能助手补充&#xff0c;AI Assistant&#xff0c;相信在后续IDEA使用中&#xff0c;会对开发者工作效率带来不错的提升。 以下是…

亚信科技 AntDB 数据库与星辰天合全产品体系完成兼容互认

近日&#xff0c;亚信科技 AntDB 数据库与星辰天合全产品体系完成兼容互认。经过双方团队的严格测试&#xff0c;AntDB 数据库与天合翔宇分布式存储系统、统一数据平台 XEDP、超融合平台 XHERE 等产品完全兼容&#xff0c;整体运行稳定高效。 双方产品的兼容互认完成&#xff…

基于Java+SpringBoot+vue的早餐店点餐系统设计与实现

博主介绍&#xff1a;✌擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案…

代理辅助多任务优化算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

SpringBoot集成海康网络设备SDK

目录 SDK介绍 概述功能下载对接指南集成 初始化项目初始化SDK 初始化SDK概述新建AppRunner新建SdkInitService新建InitSdkTask新建 HCNetSDK调用业务接口部署 拷贝so库文件到部署目录追加环境变量追加so库加载路径验证SDK初始化是否成功代码 SDK介绍 概述 设备网络SDK是基于…

企业数据怎样管理才能蜕变为可变现的资产?

企业竞争的本质&#xff0c;是在不确定市场环境下资源配置效率的竞争。 如何快速感知市场变化、识别客户需求、增强决策准确性&#xff0c;是企业资源配置的核心关注点和竞争点。 数据作为企业资源的具体表现形式和载体&#xff0c;已经渗透到企业设计、生产、管理、服务和运…