javaScript复制功能调用实现方案_基础知识

复制代码 代码如下:

验证码:<input type="text" id="code"/> <input type="button" value="复制" onclick="fuzhi()">
<script type="text/javascript">
function fuzhi(){
var codeVal=jQuery("#code").val();
alert(codeVal);
if (navigator.userAgent.toLowerCase().indexOf('ie') > -1) { //IE浏览器
clipboardData.setData('Text', codeVal);
alert("已经复制到剪切板");
} else {
prompt("请复制:", codeVal);
}
// window.clipboardData.setData("Text",jQuery("#code").val());
}
</script>

最近都没有什心情去写博文,主要因为心烦的事情渐渐多起来了。
哎!离题了,回到这篇文章了。说到使用js实现点击复制的功能,我下面想说的方法也是和网上的大同小异的。js实现是很简单,最难的是兼容问题,毕竟用IE以外的人还是有很多的。这里,我也是根据网上的相关资源总结一下方法。

方法一,逐一判别处理法
方法很简单也很容易懂,就是通过判断客户端浏览器类别,来执行不同的js代码来实现复制功能。虽然从理论上来说,这样是行得通得。但是,事实并没有我们想得那么容易。因为我们并不太清楚一些浏览器下js复制代码的写法,至少我所知道的也就是IE和FF。

如果只是兼容IE和FF的话,那么简单得多了。这里我使用一个网上比较有名的判断IE核的方法,13字节法,这个也是我常用的。

复制代码 代码如下:

if("\v"=="v") {//13个字节
//这里是IE核,执行的代码,亲测兼容IE8
}else{
//非IE核执行代码
}

这里我写个大概的实现复制的构架,具体代码我不粘上来的,网上可以很简单就找到,给大家参考

复制代码 代码如下:

function clipBoard(object){
//获取object的值,即复制内容
var copyTxt=document.getElementById(object).value;
//调用copy2Clipboar来实现浏览器,判断及执行代码
if(copy2Clipboard(copyTxt)!= false){
alert('复制成功');
}
}
copy2Clipboard = function(txt){
if("\v"=="v"){
//IE浏览器执行代码
window.clipboardData.clearData();
window.clipboardData.setData("Text",txt);
return true;
}else if(navigator.userAgent.indexOf("Firefox")>0){
//Firefox浏览器
return true;
}else if(window.google && window.chrome){
//chrome浏览器
return true;
}else{
alert("浏览器不支持");
return false;
}
}

根据需要可以自行添加不同的判断浏览器代码,实现该浏览器下的复制功能。一般情况下,根据IE > FF > opera/chrome>其他,这样的顺序进行判断。

方法二,flash间接处理法
原理很简单,通过创建一个flash,将复制的内容以变量的方式传递给flash,flash再将内容复制到内存中,这样就实现了复制的功能。只要支持flash,按理上是可以兼容绝大部分的浏览器的,这个方法是我今天看到的,也测试验证了。

安装及使用方法,可以在上面两个网址上找到,E文版,中文版只有通过搜索去找咯!
这里我提供一下实现框架的简单版,这里有用到上面的实现方式。这里有修改的,根据官方版说明方法,在单页面很容易就能实现该功能,但是在实际应用到某些CMS中,可能会遇到一些问题。什么问题呢?IE核页面会弹出 “该页面已终止”。原因很简单,就是js加载未完成就调用。竟然是IE的问题,那么我们就可以使用判断IE的方法,将IE独立出来,其他核就使用flash方法实现。

复制代码 代码如下:

function checkClient(object){//判断浏览器
var copyTxt=document.getElementById(object).value; //获取复制的内容
if("v"!="v"){
//这里根据官方文档设置
//这里设置flash位置,绝对相对都可以
ZeroClipboard.setMoviePath('ZeroClipboard.swf');
//创建一个复制对象
var clip = new ZeroClipboard.Client();
//设置手形
clip.setHandCursor(true);
//设置复制的内容
clip.setText(copyTxt);
//设置触发对象
>clip.glue('d_clip_button');
}
}

这里用于判断是否为IE核,IE核将不使用flash处理法,直接使用复制机制

复制代码 代码如下:

//复制处理
function clipBoard(object){
var copyTxt=document.getElementById(object).value;
if(copy2Clipboard(copyTxt)!= false){
alert('复制成功');
}
}
copy2Clipboard = function(txt){
if("\v"=="v") { //判断是否是IE浏览器
window.clipboardData.clearData();
window.clipboardData.setData("Text",txt);
return true;
}
else{ //非IE核直接返回
return true;
}

以上为第二种方法的最简单设置方法,将代码放到<head></head>之间即可不管是第一种,还是第二种方法都要在需要复制的页面上添加下面两行代码
设置复制内容的文本域

复制代码 代码如下:

<input type="text" id="textinfo"
onmouseout="checkClient('textinfo')" value="复制的内容" size="65"/>

设置触发对象按钮

复制代码 代码如下:

<div id="d_clip_button" onclick="copyCode('textinfo')">复制地址</div>

这是第二种方法才要添加的,设置检测浏览器

复制代码 代码如下:

<script>checkClient('textinfo');</script>

写到这里,大概的步骤就是这样了,其中还有些id的名称可以按需要修改。至少完整代码,可以参考官方的demo。
累了。

时间: 2024-09-16 10:31:07

javaScript复制功能调用实现方案_基础知识的相关文章

JavaScript方法和技巧大全_基础知识

这篇介绍JavaScript方面的日志,我在是Clang上看到的.作者介绍挺全面的,所以转载过来让感兴趣的朋友看一下.呵呵--- 有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通JavaScript了,直到目前,我才越来越觉得JavaScript远比我想象的复杂和强大,我开始崇拜它,就像崇拜所有OOP语言一样- 趁着节日的空隙,把有关JavaScript的方

JavaScript操作Cookie详解_基础知识

什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人资料信息. 从JavaScript的角度看,cookie 就是一些字符串信息.这些信息存放在客户端的计算机中,用于客户端计算机与服务器之间传递信息. 在JavaScript中可以通过 doc

JavaScript中的this机制_基础知识

JavaScript有自己的一套this机制,在不同情况下,this的指向也不尽相同. 全局范围 console.log(this); //全局变量 全局范围使用this指向的是全局变量,浏览器环境下就是window. 注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined. 函数调用中 function foo() { console.log(this); } foo(); //全局变量 函数调用中的this也指向全局变量. 注:ECMAScript5的

使用JavaScript刷新网页的方法_基础知识

 可以使用JavaScript location.reload方法刷新网页.当用户点击一个链接此代码可以自动在一个事件调用. 如果想使用鼠标点击刷新网页,可以用下面的代码: <a href="javascript:location.reload(true)">Refresh Page</a> 要了解它更好的办法,可以刷新页面自动刷新: 还可以使用JavaScript后自动给定时间段,以刷新页面.以下是每5秒后会刷新此页面的例子.可以改变这个时候按您的要求. &l

详解JavaScript中的异常处理方法_基础知识

 有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误:语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: <script type="text/javascript"> <!-- window.print(; //--> </script> 当一个语法错误在JavaScript中出现,只有在同一个线程中包含的语法错误的影响

介绍JavaScript的一个微型模版_基础知识

 我一直在使用一个小工具,并发现它在构建Javascript应用过程中非常实用.它是一个非常简单的模板函数,速度快,支持缓存,并容易使用.我想分享一下使用它的过程中的一些技巧. 以下是模板函数的代码(你可以从正要出版的Secrets of the JavaScript Ninja一书中得到更精炼的版本):   // 简单JavaScript模板引擎 // John Resig - http://ejohn.org/ - MIT Licensed (function(){ var cache =

大型JavaScript应用程序架构设计模式_基础知识

PDF版的PPT下载地址:http://www.slideshare.net/jibyjohnc/jqquerysummit-largescale-javascript-application-architecture 注:在整理的过程中,发现作者有些思想是返来复去地说,所以删减了一部分,如果你的英文良好,请直接阅读英文的PPT. 以下是本文的主要章节: 1. 什么叫"JavaScript大型程序"? 2. 顾当前的程序架构 3. 长远考虑 4. 头脑风暴 5. 建议的架构    5.

JavaScript核心语法总结(推荐)_基础知识

本文介绍了JavaScript的基本(常用)语法,供大家参考. Overview 先说一下Javascript该怎么写.两种形式,一种是直接把JavaScript写在HTML页面里,另一种是存在*.js文件里然后在页面内引用. 直接写时,即可以放在<head> </head>内,也可以放在<body> </body>内.一般函数是放在<head>区的,具体的执行代码是在<body>区里的.例如,在body里写: <body>

学习JavaScript的最佳方法分享_基础知识

学习新的东西是件可怕的事.对我来说,掌握一项新技能最大的问题是,我不知道自己懂什么.鉴于此,定个计划,学习你感兴趣的东西应该会有用.这篇文章的主旨就是:你为学习JavaScript 制定的蓝图.路线.行动计划!你不必担心找不到最好的资源,先整理些不好的资源,再确定下一步该学什么.遵循它,一步一步来. 任务0:了解什么是JavaScript 在你真正开始学习JavaScript 之前,花一分钟了解一下什么是JavaScript,它有哪些功能. JavaScript不是jQuery.Flash或Ja