• Zero Clipboard


    开发中经常会用到复制的功能,在 IE 下实现比较简单,但要想做到跨浏览器比较困难了。

    本文将介绍一个跨浏览器的库类 Zero Clipboard ,它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的 document.execCommand("Copy") 更加灵活。

    Zero Clipboard 的实现原理

    Zero Clipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash,但最新的 Flash Player 10 只允许在 Flash 上进行操作才能启动剪贴板,所以 Zero Clipboard 对此进行了改进,用了一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就可以使用 Flash 的复制功能了。

    <html>
    <head>
    	<title>Zero Clipboard - 跨浏览器兼容的“复制到剪贴板”功能</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<style type="text/css">
    		body {
    			background: url("images/grid.gif") repeat;
    		}
    		.clip_container {
    			 500px;
    			height: 198px;
    			position: absolute;
    			top: 50%;
    			left: 50%;
    			margin:-210px 0 0 -250px;
    			border: 2px solid #FF8000;
    			background: #FFFFFF;
    		}
    		
    		.clip_title {
    			height: 35px;
    			font-family: arial,sans-serif;
    			font-size: 21px;
    			color: #FFFFFF;
    			line-height: 35px;
    			background: #FF9B08;
    		}
    		
    		.clip_button {
    			 50px;
    			height: 18px;
    			padding: 3px;
    			margin: 5px 0px 5px 5px;
    			font-size: 14px;
    			font-weight: bold;
    			cursor: default;
    			text-align: center;
    			line-height: 18px;
    			color: #FFFFFF;
    			border: 1px solid #CCCCCC;
    			float: left;
    		}
    		
    		.clip_note {
    			 432px;
    			height: 24px;
    			margin: 5px 0px;
    			font-family: '微软雅黑';
    			font-size: 12px;
    			line-height: 24px;
    		}
    		
    		.clip_text {
    			margin: 0px 5px;
    		}
    		
    		.clip_button {
    			background-color: #008000;
    			border: 1px solid #96CA76;
    		}
    		
    		.clip_button.hover {
    			background-color: #96CA76;
    			border: 1px solid #008000;
    		}
    		
    		.clip_button.active {
    			background-color: #008000;
    			border: 1px solid #96CA76;
    		}
    		
    		.footer {
    			 485px;
    			height: 18px;
    			margin-top: 6px;
    			margin-left: 5px;
    			font-family: Microsoft YaHei, SimSun, FangSong;
    			font-size: 12px;
    			color: #515151;
    			text-align: center;
    			line-height: 18px;
    		}
    		
    		.footer a {
    			color: #515151;
    			font-weight: bold;
    		}
    		
    		.footer a:hover {
    			color: #0080FF;
    		}
    	</style>
    	<script type="text/javascript" src="ZeroClipboard/ZeroClipboard.js"></script>
    	<script type="text/javascript">
    		// 创建ZeroClipboard(剪贴板)对象
    		var clip = new ZeroClipboard.Client();
    		clip.setHandCursor(true);// 设置鼠标为手型
    
    		// 初始化方法
    		function init() {
    			// 鼠标悬停时将内容复制到剪贴板
    			clip.addEventListener("mouseOver", function (client) {
    				clip.setText();
    			});
    
    			// 鼠标悬停时将内容复制到剪贴板
    			clip.addEventListener("mouseDown", function (client) {
    				var clipText = $("clip_text").value;
    				if (clipText == "") {
    					$("clip_msg").innerHTML = "<font color="#FF0000">请输入要复制的内容!</font>";
    					$("clip_text").focus();
    				}
    			});
    
    			// 内容复制到剪贴板成功时提示信息
    			clip.addEventListener("complete", function (client, text) {
    				if (text != "") {
    					$("clip_msg").innerHTML = "<font color="#008000">内容已成功复制到剪贴板!</font>";
    				} else {
    					$("clip_msg").innerHTML = "<font color="#FF0000">请输入要复制的内容!</font>";
    					$("clip_text").focus();					
    				}
    			});
    
    			// 绑定 Copy 按钮
    			clip.glue("clip_button");
    		}
    
    		// 封装通过ID获取元素的方法
    		function $(id) {
    			return document.getElementById(id);
    		}
    	</script>
    </head>
    <body onLoad="init()">
    	<div class="clip_container">
    		<div id="clip_title" class="clip_title">Click Copy Button First, Then Ctrl+V To Paste!</div>
    		<div id="clip_button" class="clip_button">Copy</div>
    		<div id="clip_note" class="clip_note">(点击 Copy 即可复制内容至剪贴板) <span id="clip_msg"></span></div>
    		<div class="clip_text"><textarea cols="58" rows="5" id="clip_text" onChange="clip.setText(this.value)"></textarea></div>
    		<div class="footer">
    			<p>Design By MrChu <a target="_blank" href="http://sighttp.qq.com/authd?IDKEY=453cbf8f7771ac25821cd442998509166f3be5cc012809d8" alt="联系作者" title="联系作者"><img border="0" src="http://wpa.qq.com/imgd?IDKEY=453cbf8f7771ac25821cd442998509166f3be5cc012809d8&pic=45" alt="点击这里给我发消息" title="点击这里给我发消息" style="vertical-align:middle;"> 联系作者</a> <a target="_blank" href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=muLz_-X4_-X58u-t--P48-v12uvrtPn19w" alt="点击这里给我发送邮件" title="点击这里给我发送邮件" style="text-decoration:none;"><img src="http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_01.png" style="border:none;vertical-align:middle;"/></a></p>
    		</div>
    	</div>
    </body>
    </html>
    

    效果图:

    源码下载:http://download.csdn.net/detail/for_china2012/6225323

  • 相关阅读:
    《文献管理与信息分析》速看提问
    《构建之法(第三版)》速读提问
    《深入理解计算机系统》速读提问
    2017-2018-1 20179205《Linux内核原理与设计》第八周作业
    《从问题到程序》第一、二章学习
    2017-2018-1 20179205 第三周测试 汇编混合编程
    2017-2018-1 20179205《Linux内核原理与设计》第七周作业
    第三周main参数传递-1 课堂测试
    2017-2018-1 20179205《Linux内核原理与设计》第六周作业
    2017-2018-1 20179203 《Linux内核原理与分析》第八周作业
  • 原文地址:https://www.cnblogs.com/riskyer/p/3306450.html
Copyright © 2020-2023  润新知