网页内容复制粘贴(三种方案 兼容多种浏览器)
tags:
- js
- ctrl+c
网页内容复制粘贴(三种方案 兼容多种浏览器)
对网页上的内容实现复制粘贴的功能
痛点:需要支持多种不同的浏览器 主要有IE,Firefox
- IE浏览器下的解决方案:
window.clipboardData.setData("Text", text);
- 通用浏览器的解决方案: 选中元素之后执行:
document.execCommand('copy')
- 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"));
})
复制代码
参考资料:
- 几个通用的解决复制的方法:
- document.execCommand API W3C API
- How do I copy to the clipboard in JavaScript?
- How does Trello access the user's clipboard?
- 20 行 JS 代码,实现复制到剪贴板功能
兼容处理了浏览器的复制功能,有更好的方案解决欢迎留言联系 未经作者允许 请勿转载,谢谢 :)
转载于:https://juejin.im/post/5a2e75abf265da432c23ce2f
网页内容复制粘贴(三种方案 兼容多种浏览器)相关推荐
- iphone复制不能全选_IOS默认全选复制的三种方案
类似于textField,长按就会默认跳出复制的选项,但是默认选中的就是你手指点击的那个文字,想全选的话必须手动选择全选才可以,而最近碰到一个需求就是要点击文字,默认就是选中所有的文字,比如游戏中的邀 ...
- WordPress文章防复制的三种方法
原文地址 WordPress文章如何防复制三种方法 - 方包博客 - java|python|前端开发|运维|电商|ui设计 有的时候我们非常烦恼,我们好不容易辛辛苦苦写的一篇文章,自己的站还没收录呢 ...
- sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...
- mysql数据冗余_MySQL冗余数据的三种方案
一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...
- MySQL 8.0 异步复制的三种方式
本实验中分别针对空库.脱机.联机三种方式,配置一主两从的mysql标准异步复制.只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况. 实验环境 [root@slave2 ~]# cat /e ...
- 网页的横向打印的三种方案(print your page landscape)
关于网页打印,window.print()提供的功能离远离一般的需求,很多情况下需要编程扩展 目前网上有很多关于网页打印的,但大多采用了ActiveX控件或IE内置的一些Object,由于Active ...
- mongo数据同步的三种方案
(一)直接复制data目录(需要停止源和目标的mongo服务) 1.针对目标mongo服务已经存在,并正在运行的(mongo2-->mongo). 执行步骤: (1).停止源/目标服务器的mon ...
- JS 异步加载js的三种方案
js文件同步加载的缺点: 页面的js文件一般是同步加载,加载到js文件会阻断html和css的加载,要等到js文件加载完毕,才能继续向下执行,因为js文件可能会操作html和css:但有些js文件不会 ...
- iOS 组件化的三种方案
组件化 本文主要介绍iOS组件化的三种方案 1.常⽤的三种方案 URL Scheme Target - Action Protocol - Class 匹配 1.1. URL Scheme路由 使 U ...
最新文章
- 元宇宙的“42条共识”
- 通用httpclient生成方式
- [转载]Guice 1.0 用户指南
- 【转】oracle number与java中long、int的对应
- 日志规范之阿里巴巴开发手册中的其它规范讲解
- apache建立虚拟主机[转载]
- stm32车牌识别_基于STM32单片机的车牌识别
- 【转】UITableView详解(UITableViewCell
- 《结对-网页贪吃蛇游戏-需求分析》
- 刷课在线支付系统(新手入门编写,大佬勿喷)
- windows-API劫持(API-HOOK)
- 在校大学生如何规划自己的程序员之路
- 并行处理与体系结构_理论背景_01
- 一款基于Vue的自适应Web在线音乐播放器
- 大量数据导出Excel 之 多重影分身之术 [转]
- 【强化学习】手把手教你实现游戏通关AI(2)——Q-Learning
- Firewalld的区域(zone)
- 问题排查-Flink session窗口最后一个不过期问题
- 怎么把移动硬盘挂载到linux,linux 怎么挂载移动硬盘
- ggplot2添加散点图文字标记
热门文章
- 如何安装Python3.7,小白必看!
- python培训周末线下班_现在学习Python2还是python3?老男孩Python线下班
- php dao 接口,SSH中公共Dao层、Dao接口
- hive 建表java_hive创建表报错
- idea2016 android genyomtion,Android Studio Genyomtion配置
- 大文件上传 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)
- c语言上机实验作业答案,第十二次C语言上机实验参考答案
- 巅峰抢购助手pc_豌豆荚、91助手宣布暂停部分服务!第三方应用商店为何式微?...
- java map 为空_java中如何判断map是否为空
- python语言程序设计实践教程实验八答案_Python程序设计实验报告: 实验八 文件...