移动端实现复制内容至剪贴板

需求场景

使用document.execCommand()方法,以下简称为“命令API”。

示例一

HTML部分

<input type="text" id="text_input" />
<button type="button" id="copy_text">copy</button>

JavaScript部分

var inputElem = document.getElementById(‘text_input‘);
var btnElem = document.getElementById(‘copy_text‘);
btnElem.addEventListener(‘click‘, function() {
  if(!document.execCommand) {
    console.error(‘copy unsupport‘);
    return;
  }
  inputElem.select();
  var result = document.execCommand(‘copy‘);
  if(result) {
    console.log(‘copy success‘);
  } else {
    console.error(‘copy fail‘);
  }
});

示例二

实际开发中,需要复制的内容通常是文本元素中的文本。此时,可以使用一个不在可见区域内的表单元素来变向实现。

HTML部分

<input type="text" id="text_input"  />
<p>paragraph</p>
<button type="button" id="copy_text">copy</button>

CSS部分

#text_input {
  position: absolute;
  top: -100px;
}

JavaScript部分

var inputElem = document.getElementById(‘text_input‘);
var btnElem = document.getElementById(‘copy_text‘);
var textElem = document.querySelector(‘p‘);
btnElem.addEventListener(‘click‘, function() {
  if(!document.execCommand) {
    console.error(‘当前环境不支持复制功能‘);
    return;
  }
  inputElem.value = textElem.innerText;
  inputElem.select();
  var result = document.execCommand(‘copy‘);
  if(result) {
    console.log(‘copy success‘);
  } else {
    console.error(‘copy fail‘);
  }
});

与例子一的差别在于,选中表单元素前,需要对其进行赋值操作。

注意事项

  • 检测当前环境是否支持命令API,这一步不可或缺。
  • 浏览器环境不支持命令API,需要合理地提示用户手动进行复制操作。所以,一定不能设置文本元素 user-select: none;,这样会使文本不能被选择。
  • 表单元素必须处于被选中状态,即调用 inputElement.select() 方法,文本元素没有 select() 方法。
  • 经测试,不能使用 display: none;visibility: hidden; 来隐藏表单元素。所以,只能将此表单元素,定位至可以见区域之外。

更多方案

  • clipboard.js:不依赖flash的一个插件。实现原理和上面的例子是类似的,使用插件可以简化很多开发工作。
时间: 2024-09-30 09:02:53

移动端实现复制内容至剪贴板的相关文章

《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》

前记:本来原生的JS是有提供一个函数来实现这个功能(window.clipboardData),但是很遗憾,这个函数仅仅支持IE和FF浏览器,所以基本用处不大.下边介绍的是一个第三方插件库(ZeroClipboard.js). ZeroClipboard.js在Git上的地址为:https://github.com/zeroclipboard/zeroclipboard 注意:此js库不支持兼容手机端(包括Android.IOS),仅支持PC端浏览器. 第一步:将插件库引入到工程中. 把Git上

蚂蚁老码农——JavaScript复制内容到剪贴板

最近一个活动页面中有一个小需求,用户点击或者长按就可以复制内容到剪贴板,记录一下实现过程和遇到的坑.常见方法查了一下万能的Google,现在常见的方法主要是以下两种: 第三方库:clipboard.js原生方法:document.execCommand() 分别来看看这两种方法是如何使用的.clipboard.js这是clipboard的官网:clipboardjs.com/,看起来就是这么的简单.引用直接引用: <script src="dist/clipboard.min.js&quo

JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)

现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个通杀所有浏览器的js复制内容到剪贴板的方案: 这个方案是一个最流行的方法: 著名的Clipboard Copy解决方案 利用一个clipboard.swf作为桥梁,复制内容到剪贴板. 原理是:创建一个隐藏的flash文件,同时给给flash的变量FlashVars 赋值“clipboard=..”,通过这个赋

兼容各浏览器 复制内容到剪贴板

<script type="text/javascript" src="../Scripts/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="../js/ZeroClipboard/ZeroClipboard.js"></script> <script type="text/ja

ClipboardData实现复制内容到剪贴板,兼容各种浏览器

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="registAdd.aspx.cs" Inherits="registAdd" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&

js复制内容到剪贴板格式化粘贴到excel中

<input id="Button1" type="button" value="导出EXCEL" onclick="copyToClipboard('ta')"> <div style="width: 760px;float:left;" id="ta"> <table border="0" style="" cel

js实现复制内容到剪贴板

一. 原生js实现,电脑可以用,手机不可以用 1. 必须是 input元素 才可以使用 <input id="code" type="text" value="www"> <span class="copy-btn" v-on:click="copy">复制</span> //获取input并执行选中 document.getElementById('code').sel

Zclip:复制页面内容到剪贴板兼容各浏览器

WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制,然后用户可以粘贴到想粘贴的地方. 效果如下所示: 下面将结合实例讲解如何使用一款基于jQuery的插件——Zclip来实现复制内容到剪贴板的功能,只说如何使用,不讲原理.其实IE上有个方法可以实现点击复制,但是由于只是IE独有,所以我们不提倡.而Zclip是利用一个隐藏的flash文件来完成复制的功

jQuery-zclip实现复制内容到剪切板

jQuery-zclip是一个复制内容到剪贴板的jQuery插件,使用它我们不用考虑不同浏览器和浏览器版本之间的兼容问题.jQuery-zclip插件需要Flash的支持,使用时记得安装Adobe Flash Player. 本来以为,复制粘贴很简单,没想到还需要插件. 找了很多,这个jquery-zclip的插件算是不错的. 这里需要注意的就是,这个插件,必须在服务器的环境中才能正常显示效果. jquery.zclip.min.js插件 文件放在服务器下面才能运行: <!DOCTYPE htm