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.pswp.cn/news/540942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540942.shtml
英文地址,請注明出處:http://en.pswp.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…