php点击复制按钮到我的粘贴板,js实现点击复制当前文本到剪贴板功能(兼容所有浏览器)...

最近做项目时,在网站框架搭建过程,有一个功能需要实现复制文本到剪贴板,相信这个功能很常用,但是对于不常写JS代码的我来说是一个比较大的挑战,回想以前做过的一个站点,使用window.clipboardData实现复制到剪贴板功能,也仅仅支持IE和FF浏览器,当时在百度找个几个方案,看不下去就放弃了,后来在代码中做了判断,如果不支持该属性,就直接alert:此功能不支持该浏览器,请手工复制文本框中内容。有没有人遇到同样情况?

alert("此功能不支持该浏览器,请手工复制文本框中内容");

今天就为大家分享使用复制到剪贴板功能,由于能力有限,有错误的地方还请大家多多指教~

相信很多使用wordpress搭建过站点的同学都知道它采用了jQuery,对jQuery大家并不陌生,使用起来非常简单,可惜jQuery本身并没有实现复制到剪贴板的功能,但或许它的API会有这个功能。这次我搭建的站点采用wordpress,花了点时间搜索jQuery复制到剪贴板的API,还真的有:jQuery ZeroClipboard ,于是使用它在wordpress简单实现了复制到剪贴板的功能。但是呢,jQuery ZeroClipboard原来是有个父亲大人,叫Zero Clipboard。

Zero Clipboard作为一个独立的js库,它利用 Flash 进行复制,需要两个文件:ZeroClipboard.js 和 ZeroClipboard.swf 。网络上有2个版本,实现原理都是使用flash进行复制,不知道原创是谁的,也可能一家子的2个兄弟,这个就不管了,只要我们自己做到尊重版权,表示问心无愧,今天给大家介绍的这个版本相对来说比较简单。

首先看下图是为使用Zero Clipboard后生成的flash对象,它能兼容的flash10及以下版本,兼容所有的浏览器:

d02faa62e82a3820448cdfd9c7358cad.png

使用它需要搭建服务器环境,可能有同学不太清楚,关于搭建服务器环境的,方法有很多,如xp或者win7系统自带的IIS,也可以使用xampp、appserv、APMServ等集成包,安装即可,搭建起来非常简单,这里不做介绍。

现在我们先使用独立的js库Zero Clipboard简单实现复制到剪贴板功能,demo如下:

Zero Clipboard Test

复制到剪贴板

输入需要复制的内容

// 定义一个新的复制对象

var clip = new ZeroClipboard( document.getElementById("d_clip_button"), {

moviePath: "ZeroClipboard.swf"

} );

// 复制内容到剪贴板成功后的操作

clip.on( 'complete', function(client, args) {

alert("复制成功,复制内容为:"+ args.text);

} );

demo下载 (温馨提示:下载代码的同学,浏览demo时记得使用服务器环境,不然看不到效果的~)

接下来介绍jQuery ZeroClipboard

jQuery ZeroClipboard是在ZeroClipboard的基础上进行的改良,简称zClip,作为jQuery的API,jQuery ZeroClipboard也表现的非常简易操作。

使用前需引用2个js文件:jquery.js和jquery.zclip.js

现在我们使用jquery.zclip.js简单实现复制到剪贴板功能demo如下:

ZeroClipboard Test

.line{margin-bottom:20px;}

/* 复制提示 */

.copy-tips{position:fixed;z-index:999;bottom:50%;left:50%;margin:0 0 -20px -80px;background-color:rgba(0, 0, 0, 0.2);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr=#30000000, endColorstr=#30000000);padding:6px;}

.copy-tips-wrap{padding:10px 20px;text-align:center;border:1px solid #F4D9A6;background-color:#FFFDEE;font-size:14px;}

demo1 点击复制当前文本

点击复制我

demo2 点击复制表单中的文本

点击复制单中的文本

$(document).ready(function(){

/* 定义所有class为copy标签,点击后可复制被点击对象的文本 */

$(".copy").zclip({

path: "ZeroClipboard.swf",

copy: function(){

return $(this).text();

},

beforeCopy:function(){/* 按住鼠标时的操作 */

$(this).css("color","orange");

},

afterCopy:function(){/* 复制成功后的操作 */

var $copysuc = $("

☺ 复制成功
");

$("body").find(".copy-tips").remove().end().append($copysuc);

$(".copy-tips").fadeOut(3000);

}

});

/* 定义所有class为copy-input标签,点击后可复制class为input的文本 */

$(".copy-input").zclip({

path: "ZeroClipboard.swf",

copy: function(){

return $(this).parent().find(".input").val();

},

afterCopy:function(){/* 复制成功后的操作 */

var $copysuc = $("

☺ 复制成功
");

$("body").find(".copy-tips").remove().end().append($copysuc);

$(".copy-tips").fadeOut(3000);

}

});

});

demo下载(温馨提示:下载代码的同学,浏览demo时记得使用服务器环境,不然看不到效果的~)

上面代码中结合jQuery的操作节点的功能,出色的发挥jquery.zclip.js的作用,如复制前后的操作,动态插入节点,也可见jquery.zclip.js的强大之处,使用起来是非常简单。

从上面独立的js库ZeroClipboard.js和jquery.zclip.js 都是采用flash实现实现复制到剪贴板的功能,可以看出,使用ZeroClipboard.js带来功能相对比较少,不过它是独立的库,文件比较小,而使用jquery.zclip.js后的功能是比较丰富,不过对于不使用jQuery框架的站点来说,采用jquery.zclip.js是比较浪费宽带。

使用哪种复制方式还是具体定位情况,希望本文所述对大家学习javascript程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法导论 算法_算法导论

算法导论 算法Algorithms are an integral part of the development world. Before starting coding of any software first an effective algorithm is designed to get desired outputs. In this article, we will understand what are algorithms, characteristics of algor…

[Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容...

原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cordova-hot-code-push 以下是我对GitHub项目readme的翻译 ——————————————————————————————————————…

java 如何重写迭代器,如何用Java按需定制自己的迭代器

编写自己的迭代器的流程是:首先实现Iterable接口,进而实现该接口中的Iterator iterator()方法,该方法返回接口Iterator,Iterator接口中封装了next,hasnext,remove等方法。实现了Iterable接口的类能够通过fo…

count函数里加函数_PHP count()函数与示例

count函数里加函数PHP count()函数 (PHP count() function) "count() function" is used to get the total number of elements of an array. “ count()函数”用于获取数组元素的总数。 Syntax: 句法: count(array, [count_mode])Here, 这里&#xff0…

php整合支付宝,Thinkphp5.0整合支付宝在线下单

thinkphp5.0支付宝在线支付下单整个流程,包括创建订单、支付成功回调更新订单状态、最终跳转到商户订单详情页查看演示下载资源:17次 下载资源下载积分:998积分支付宝在线支付控制器代码 public function alipay() {//发起支付宝支付$order_n…

python函数示例_PHP closeir()函数与示例

python函数示例PHP Closedir()函数 (PHP closedir() function) The full form of closedir is "Close Directory", the function closedir() is used to close an opened directory. Closedir的完整格式为“ Close Directory” , 函数closedir()用于关闭打…

java宋江,Java编程内功-数据结构与算法「单链表」,

package com.structures.linkedlist;public class SingleLinkedListDemo {public static void main(String[] args) {HeroNode heroNode1 new HeroNode(1, "宋江", "及时雨");HeroNode heroNode2 new HeroNode(2, "卢俊义", "玉麒麟"…

智能家居逐渐融入AI技术 向大众市场扩张仍需时间

虽然智能家居变得越来越普遍,并且大众认知度越来越高,但是在这一技术变得像智能手机一样无处不在之前,OEM和服务提供商仍然有很长的路要走。 在2016年11月在硅谷举行的智能家居峰会上,代表们听到了来自整个价值链上的声音&#xf…

python 示例_Python使用示例设置add()方法

python 示例设置add()方法 (Set add() Method) add() method is used to add an element to the set, the method accepts an element and adds the elements to this set. add()方法用于将元素添加到集合中,该方法接受元素并将元素添加到该集合中。 Note: If the …

php怎么引用表单元素,表单元素:最全的各种html表单元素获取和使用方法总结...

表单是网页与用户的交互工具,由一个元素作为容器构成,封装其他任何数量的表单控件,还有其他任何元素里可用的标签,表单能够包含、、、、、等表单控件元素。表单元素有哪些呢?它包含了如下的这些元素,输入文…

数据中心部署气流遏制系统需要考虑的十大要素

数据中心气流遏制策略能够大幅提高传统数据中心制冷系统的可预测性和效率。事实上,绿色网格组织(The Green Grid)将气流管理策略称作“实施数据中心节能计划的起点”。但是,大多数已有数据中心由于受各种条件的制约,只…

JAVA语言异常,Java语言中的异常

1、异常分类从产生源头来看,Java语言中的异常可以分为两类:JVM抛出的异常。比如:访问null引用会引发NullPointerException;0作为除数,如9/0,JVM会抛出ArithmeticException;内存消耗完&#xff0…

使用Mybatis Generator结合Ant脚本快速自动生成Model、Mapper等文件的方法

新建generatorConfig.xml和build_mybatis.xml&#xff1a; jar下载 <dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency> <depe…

java bitset_Java BitSet or()方法与示例

java bitsetBitSet类或()方法 (BitSet Class or() method) or() method is available in java.util package. or()方法在java.util包中可用。 or() method is used to perform logical OR between this BitSet and the given BitSet(bs). This BitSet is updated when either t…

matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc

MATLAB图像处理工具箱函数(细化篇)第3章 MATLAB数字图像处理工具箱3.1 MATLAB图像预处理3.1.1 图像处理的基本操作1. 读入并显示一幅图像clear %清除所有的工作平台变量close all %关闭已打开的图形窗口Iimread (pout.tif); %读取图像pout.tif(该图像是图像处理工具箱自带的图像…

STM32启动解析

启动方式对的不同下载模式 STM32可以通过BOOT引脚的配置&#xff0c;来选择不同的启动模式------对应不同的下载方式。 仿真器下载—— 内部FLASH的启动方式 串口下载 —— 系统存储器的启动方式 内部SRAM一般不用&#xff0c;不讲 启动过程 以内部FLASH的启动方式为例&am…

OpenBSD基金会收到锤子科技约140万捐赠款

11月26日消息&#xff0c;给开源项目捐款一向是锤子科技发布会的传统&#xff0c;去年发布会的门票收入捐给了国人章亦春主导的开源项目OpenResty。今年&#xff0c;锤子科技选择将收益捐赠给OpenBSD基金会。OpenBSD基金会收到锤子科技约140万捐赠款 OpenBSD基金会11月23日发布…

自动化部署kvm虚拟机_自动化虚拟助手

自动化部署kvm虚拟机The automated virtual assistant or commonly called personal assistants, are developed to serve its users by performing some tasks, setting reminders and much more based on the input is given and local awareness. It is integrated with a l…

php 数据库编码,php怎么设置数据库编码方式

在php中&#xff0c;可以使用mysql_query()函数来设置mysql数据库的编码方式&#xff1b;具体方法&#xff1a;在mysql_connect()语句之后添加“mysql_query("set names 编码方式");”代码即可。本教程操作环境&#xff1a;windows7系统、PHP7.1版&#xff0c;DELL G…

mysql截取字符串与reverse函数

mysql的函数大全&#xff1a; http://www.jb51.net/Special/606.htm 这个网页上很多知识点&#xff0c;可以学习下&#xff0c;关于mysql的函数&#xff0c;也可以作为API查询&#xff1a; 这里只说下mysql的截取函数和reverse函数&#xff1a; MySQL 字符串截取函数&#xff1…