tags:

  • js
  • ctrl+c

网页内容复制粘贴(三种方案 兼容多种浏览器)

对网页上的内容实现复制粘贴的功能

痛点:需要支持多种不同的浏览器 主要有IE,Firefox

  1. IE浏览器下的解决方案: window.clipboardData.setData("Text", text);
  2. 通用浏览器的解决方案: 选中元素之后执行: document.execCommand('copy')
  3. Firefox下的解决方案 两种折中的方案 a. 监听hover事件 当鼠标移动至需要复制的文本上时 用户按下ctrl+c 实现复制 b.window.prompt("Copy to clipboard: Ctrl+C, Enter", text); 弹出框内容为选中的文案,用户按下ctrl+c 实现复制

整合之后的代码为

function copyToClipboard(text) {if (window.clipboardData) { // Internet Explorerwindow.clipboardData.setData("Text", text);} else {var textArea = document.createElement("textarea");textArea.style.background = 'transparent';textArea.value = text;document.body.appendChild(textArea);textArea.select();try {if (!document.execCommand('copy')) {copyToClipboardMozilla(text);} else {showInfo("提示", "复制成功")}} catch (err) {console.log('Oops, unable to copy');}document.body.removeChild(textArea);}
}function copyToClipboardMozilla(text) {window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}$(".copy").on("mouseenter", function () {$(this).css("background-color", "#c8c9c8");$(this).focus();var textArea = document.createElement("textarea");textArea.style.background = 'transparent';textArea.id = "copyContent";textArea.value = $(this).text();document.body.appendChild(textArea);textArea.select();
})$(".copy").on("mouseleave", function () {$(this).css("background-color", "");document.body.removeChild(document.getElementById("copyContent"));
})
复制代码

参考资料:

  1. 几个通用的解决复制的方法:
  2. document.execCommand API W3C API
  3. How do I copy to the clipboard in JavaScript?
  4. How does Trello access the user's clipboard?
  5. 20 行 JS 代码,实现复制到剪贴板功能

兼容处理了浏览器的复制功能,有更好的方案解决欢迎留言联系 未经作者允许 请勿转载,谢谢 :)

转载于:https://juejin.im/post/5a2e75abf265da432c23ce2f

网页内容复制粘贴(三种方案 兼容多种浏览器)相关推荐

  1. iphone复制不能全选_IOS默认全选复制的三种方案

    类似于textField,长按就会默认跳出复制的选项,但是默认选中的就是你手指点击的那个文字,想全选的话必须手动选择全选才可以,而最近碰到一个需求就是要点击文字,默认就是选中所有的文字,比如游戏中的邀 ...

  2. WordPress文章防复制的三种方法

    原文地址 WordPress文章如何防复制三种方法 - 方包博客 - java|python|前端开发|运维|电商|ui设计 有的时候我们非常烦恼,我们好不容易辛辛苦苦写的一篇文章,自己的站还没收录呢 ...

  3. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  4. mysql数据冗余_MySQL冗余数据的三种方案

    一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...

  5. MySQL 8.0 异步复制的三种方式

    本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...

  6. 网页的横向打印的三种方案(print your page landscape)

    关于网页打印,window.print()提供的功能离远离一般的需求,很多情况下需要编程扩展 目前网上有很多关于网页打印的,但大多采用了ActiveX控件或IE内置的一些Object,由于Active ...

  7. mongo数据同步的三种方案

    (一)直接复制data目录(需要停止源和目标的mongo服务) 1.针对目标mongo服务已经存在,并正在运行的(mongo2-->mongo). 执行步骤: (1).停止源/目标服务器的mon ...

  8. JS 异步加载js的三种方案

    js文件同步加载的缺点: 页面的js文件一般是同步加载,加载到js文件会阻断html和css的加载,要等到js文件加载完毕,才能继续向下执行,因为js文件可能会操作html和css:但有些js文件不会 ...

  9. iOS 组件化的三种方案

    组件化 本文主要介绍iOS组件化的三种方案 1.常⽤的三种方案 URL Scheme Target - Action Protocol - Class 匹配 1.1. URL Scheme路由 使 U ...

最新文章

  1. 元宇宙的“42条共识”
  2. 通用httpclient生成方式
  3. [转载]Guice 1.0 用户指南
  4. 【转】oracle number与java中long、int的对应
  5. 日志规范之阿里巴巴开发手册中的其它规范讲解
  6. apache建立虚拟主机[转载]
  7. stm32车牌识别_基于STM32单片机的车牌识别
  8. 【转】UITableView详解(UITableViewCell
  9. 《结对-网页贪吃蛇游戏-需求分析》
  10. 刷课在线支付系统(新手入门编写,大佬勿喷)
  11. windows-API劫持(API-HOOK)
  12. 在校大学生如何规划自己的程序员之路
  13. 并行处理与体系结构_理论背景_01
  14. 一款基于Vue的自适应Web在线音乐播放器
  15. 大量数据导出Excel 之 多重影分身之术 [转]
  16. 【强化学习】手把手教你实现游戏通关AI(2)——Q-Learning
  17. Firewalld的区域(zone)
  18. 问题排查-Flink session窗口最后一个不过期问题
  19. 怎么把移动硬盘挂载到linux,linux 怎么挂载移动硬盘
  20. ggplot2添加散点图文字标记

热门文章

  1. 如何安装Python3.7,小白必看!
  2. python培训周末线下班_现在学习Python2还是python3?老男孩Python线下班
  3. php dao 接口,SSH中公共Dao层、Dao接口
  4. hive 建表java_hive创建表报错
  5. idea2016 android genyomtion,Android Studio Genyomtion配置
  6. 大文件上传 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)
  7. c语言上机实验作业答案,第十二次C语言上机实验参考答案
  8. 巅峰抢购助手pc_豌豆荚、91助手宣布暂停部分服务!第三方应用商店为何式微?...
  9. java map 为空_java中如何判断map是否为空
  10. python语言程序设计实践教程实验八答案_Python程序设计实验报告: 实验八 文件...