码迷,mamicode.com
首页 > Web开发 > 详细

前端JS复制特定区域的文本

时间:2018-12-19 21:04:32      阅读:581      评论:0      收藏:0      [点我收藏+]

标签:ie9   script   区域   设定   pre   height   man   ons   html   

html5的webAPI接口可以很轻松的使用短短的几行代码就实现点击按钮复制区域文本的功能,不需要依赖flash。

代码如下:

/* 创建range对象   */
const range = document.createRange();
range.selectNode(element);    // 设定range包含的节点对象 

/* 窗口的selection对象,表示用户选择的文本 */
const selection = window.getSelection();
if(selection.rangeCount > 0) selection.removeAllRanges(); // 将已经包含的已选择的对象清除掉
selection.addRange(range);                                // 将要复制的区域的range对象添加到selection对象中

document.execCommand(‘copy‘); // 执行copy命令,copy用户选择的文本

测试:

浏览器的版本号为我测试时使用的版本。

edge浏览器、Chrome(v54.0.2840.99 m)、Firefox(v49.0.1)可用。

IE9、IE10、IE11会弹出提示询问是否将文本粘贴到剪贴板上。

IE7、IE8不支持该功能。

IOS10的Safari浏览器可用。

 

根据反馈,IOS9以下的Safari浏览器应该是不支持该功能的。

Demo:

测试地址

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<article id="article">
    <h4>公园一日游</h4>
    <time>2016.8.15 星期二</time>
    <p>今天风和日丽,我和小红去了人民公园,玩了滑梯、打雪仗、划船,真是愉快的一天啊。</p>
</article>
<button id="copy">复制文章</button>
<textarea style="width: 500px;height: 100px;" placeholder="试一试ctrl + v"></textarea>
<script>
    function copyArticle(event){
        const range = document.createRange();
        range.selectNode(document.getElementById(‘article‘));

        const selection = window.getSelection();
        if(selection.rangeCount > 0) selection.removeAllRanges();
        selection.addRange(range);
        
        document.execCommand(‘copy‘);
    }

    document.getElementById(‘copy‘).addEventListener(‘click‘, copyArticle, false);
</script>
</body>
</html>

可以复制粘贴下来,自己测试一下。

API参考:

前端JS复制特定区域的文本

标签:ie9   script   区域   设定   pre   height   man   ons   html   

原文地址:https://www.cnblogs.com/qdcnbj/p/10145403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!