Javascript实现点击按钮复制指定区域文本

原文地址:Javascript实现点击按钮复制指定区域文本

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">复制文章<tton>
<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参考:

本文完!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,133评论 8 183
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 在前几天的税务总局网站高新技术企业优惠政策在线访谈上,既然有网友问加计扣除的问题。财税[2015]119号和国家税...
    Luckymay阅读 3,459评论 0 0
  • 1874年的一次反官方沙龙画展上,一幅名为《印象·日出》的画吸引了不少上层名流和艺术评论家的注意。然而当时人...
    青岑岛阅读 1,102评论 0 6