实现将html网页中的元素复制到微信编辑器中,并正常呈现排版
2018-03-15 22:47
603 查看
需实现如下功能
思路:
1、使用innerHTML获取需要复制的代码段
2、使用addEventListener创建一个监听事件,来监听copy事件,并使用clipboardData.setData方法来将代码复制到计算机的粘贴板(clipboardData.setData第一个参数可以使用’text/html’,这样格式就是html的,可以在公众平台上使用,设置该参数的时候需要放在addEventListener的函数内才可以)
3、给button加click事件,当被点击时则创建一个copy事件,来触发上面的copy监听事件(此处可以使用document.execCommand方法来触发copy事件)
4、此时还没有结束,这个时候虽然可以复制,但是不能实现普通的ctrl+c的复制文字方法,因为用ctrl+c复制的时候也会被监听到,当做copy事件来处理,所以可以使用window.getSelection()获取选中文字,来对当前页面是否有文字被选中来做判断
完整代码:
思路:
1、使用innerHTML获取需要复制的代码段
var temp = document.getElementById("target").innerHTML
2、使用addEventListener创建一个监听事件,来监听copy事件,并使用clipboardData.setData方法来将代码复制到计算机的粘贴板(clipboardData.setData第一个参数可以使用’text/html’,这样格式就是html的,可以在公众平台上使用,设置该参数的时候需要放在addEventListener的函数内才可以)
document.addEventListener('copy',myFunction); function myFunction(e) { e.preventDefault(); e.clipboardData.setData('text/html', temp); }
3、给button加click事件,当被点击时则创建一个copy事件,来触发上面的copy监听事件(此处可以使用document.execCommand方法来触发copy事件)
var btn = document.getElementById('btn'); btn.addEventListener('click', function(){ document.execCommand("copy"); alert("已复制好,可贴粘。"); });
4、此时还没有结束,这个时候虽然可以复制,但是不能实现普通的ctrl+c的复制文字方法,因为用ctrl+c复制的时候也会被监听到,当做copy事件来处理,所以可以使用window.getSelection()获取选中文字,来对当前页面是否有文字被选中来做判断
document.addEventListener('mousemove',function () { let selObj = window.getSelection(); let selectedText = selObj.toString(); if (selectedText != '') { // 移除copy监听事件 document.removeEventListener('copy', myFunction); }else{ // 添加copy监听事件 document.addEventListener('copy',myFunction); } }) function myFunction(e) { e.preventDefault(); e.clipboardData.setData('text/html', temp); }
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>微信复制DEMO</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style>
.demo {
width: 475px;
margin: 0 auto;
}
.demo-btn {
padding: 8px;
}
</style>
<script type="text/javascript">
window.onload = function(){
//获取到所需复制的代码
var temp = document.getElementById("target").innerHTML;
// 创建mousemove监听事件,当检测到有文字被选中,则移除copy,否则则添加copy
document.addEventListener('mousemove',function () { let selObj = window.getSelection(); let selectedText = selObj.toString(); if (selectedText != '') { // 移除copy监听事件 document.removeEventListener('copy', myFunction); }else{ // 添加copy监听事件 document.addEventListener('copy',myFunction); } }) function myFunction(e) { e.preventDefault(); e.clipboardData.setData('text/html', temp); }
// 给button加click事件,当被点击时则创建一个copy事件,来触发上面的copy监听事件
var btn = document.getElementB
4000
yId('btn');
btn.addEventListener('click', function(){
document.execCommand("copy");
alert("已复制好,可贴粘。");
});
}
</script>
</head>
<body>
<section class="demo">
<section id="target" style="border: 0px none;">
<section style="width:96%;margin:0 auto;border:1px solid #42ae00;box-sizing:border-box;">
<section style="width:100%;">
<img src="http://mpt.135editor.com/mmbiz_png/fgnkxfGnnkTYZ3DkBFIxXm8lsgN4NDTNictzwiasXY6eSMG9jKKBneOwXuago6AYt2oibpdODMPia2mQ5E7om4FHhQ/0?wx_fmt=png"
style="width:100%;vertical-align:top;">
</section>
<section style="margin-top:-30px;display:flex;justify-content:center;">
<section style="width:2px;background-color:#42ae00;"></section>
<section style="background-color:rgba(66,174,0,0.9);padding-left:10px;padding-right:10px;padding-top:4px;padding-bottom:3px;margin-left:4px;margin-right:4px;">
<p id="dh" style="font-size:16px;color:#ffffff;min-width:1px;font-weight:bold;">春的故事</p>
</section>
<section style="width:1px;background-color:#42ae00;"></section>
</section>
<section style="margin-top:10px;padding-left:20px;padding-right:20px;padding-bottom:20px; font-size:14px;color:#464545;">
<p>立春是中国民间重要的传统节日之一。“立”是“开始”的意思,自秦代以来,中国就一直以立春作为孟春时节的开始。所谓“一年之计在于春”,春是温暖,鸟语花香;春是生长,耕耘播种。</p>
</section>
</section>
</section>
<section class="demo-btn">
<button id="btn">复制</button>
</section>
</section>
</body>
</html>
相关文章推荐
- web开发-邮件编写HTML网页正常显示实现方法-学习笔记八
- html2canvas根据DOM元素样式实现网页截图
- html2canvas根据DOM元素样式实现网页截图
- [微信开发] 微信网页授权Java实现(https://www.cnblogs.com/lovebread/p/5513241.html)
- html2canvas根据DOM元素样式实现网页截图
- 如何用java实现在网页中保存html编辑器 编辑好的 html 文件?!(如blog里发文章的时候把要发表的内容以html文件的形式保存到服务器上?)
- asp.net程序控件显示不正常,HTML编辑器无法显示,表格等页面元素也有异常现象
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的...
- CKEditor&CKFinder结合实现在线HTML编辑器
- 通过js脚本复制网页上的一个表格的不错实现方法
- HTML 中块级元素设置 height:100% 的实现
- 用CSS实现HTML网页图文混排效果
- PHPCMS V9 Ckeditor编辑器添加排版功能实现介绍
- jquery事件对Html网页动态生成的元素失效
- 微信小程序中使元素占满整个屏幕高度实现方法
- XML的基本语法(XML实现html的网页布局的简单功能)
- 百度编辑器复制微信图片无法保存
- HTML网页打印实现分页打印功能
- html实现 页面禁止右键 禁止复制 禁止图片拖动 禁止复制和剪切