`
fwmeng_梦
  • 浏览: 8516 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
    随着前端新技术的不断涌现,客户的需求也日新月异。比如说点击按钮或者其他DOM元素,复制指定的内容到剪切板。
    大家知道,现在各种浏览器出于安全的考虑,都不允许对剪切板的内容进行访问。
    在IE浏览器下,微软自己支持的window.clipboardData.setData('text', text);在IE7,IE8下,都会提示是否允许访问剪切板,如果不允许,在不刷新的情况下也不能访问剪切板内容。还有一个大的缺陷就是,对于textarea中的内容,使用
来进行转义换行的时候,复制出的内容实际上没有进行换行。
    而像firefox,chrome,safari,opera等浏览器,都没有提供使用js直接的访问剪切板内容的方法,所以要使用js或者jquery等js框架来操作剪切板的内容,并且兼容各个浏览器,就会黔驴技穷了。那是不是就没有办法了呢?
    当然不是,外国友人Joseph Huckaby所写的zeroclipboard.js库,就很好的解决了这个问题。
    一、原理
    Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。
    二、使用方法
    1.下载ZeroClipboard.js和ZeroClipboard.swf两个文件,放在同一目录下。
    注意:以上 ZeroClipboard.js, ZeroClipboard.swf如果不在同一路径,可使用ZeroClipboard.setMoviePath( “Flash路径” );来设置ZeroClipboard.swf 地址
    下载链接位于底部 ,文件名称为 2013
    2.引入js库
    <script type="text/javascript" src="ZeroClipboard.js"></script>
    注意:src的值,是自己的程序的需要而改变。
    3.添加js代码
    <script language="JavaScript">
  var clip = null; 
  function $(id) { return document.getElementById(id); } 
  function init() { 
  clip = new ZeroClipboard.Client();
  clip.setHandCursor(true); 
  clip.addEventListener('mouseOver', function (client){   
    clip.setText( $('fe_text').value );
  });
  clip.addEventListener('complete', function (client, text) {  
  alert("复制成功");
  });
  clip.glue('clip_button', 'clip_container');
  }
</script>
      4.页面body部分
      <textarea  rows="8" name=urlName id="fe_text">复制我啊</textarea>
      <span id="clip_container">
      <input type="button"   class="button" name="copy" id="clip_button" value="复&nbsp;制"/>
      </span>
     
      这样基本的复制功能就完成了。但是需要注意的是:
      1.本地不能测试,因为flash基于安全的考虑,本地访问会报错,将不起作用。
      2.必须安装flash,否则也起作用。
     
     _____________________________________________________________________________________
     Zero Clipboard的高级功能

     1、reposition() 方法

因为按钮上漂浮有一个Flash按钮,所以当页面大小发生变化时,Flash按钮可能会错位,这样就点不着了。 不要紧,Zero Clipboard 提供了一个 reposition() 方法,可以重新计算Flash按钮的位置。我们可以将它绑定到resize事件上。如下面代码是在jQuery下实现的resize事件重新设置按钮位置:

$(window).resize(function(){
clip.reposition();
});
2、hide() 和 show() 方法

这两个方法可以隐藏和显示Flash按钮 。其中 show() 方法会调用 reposition() 方法。

3、setCSSEffects() 方法

当鼠标移到按钮上或点击时,由于有Flash按钮的遮挡,所以像 css “:hover”, “:active” 等伪类可能会失效。setCSSEffects() 方法就是解决这个问题。首先我们需要将伪类改成类,比如:

#copy-botton:hover{
border-color:#FF6633;
}
// 可以改成下面的 ":hover" 改成 ".hover"
#copy-botton.hover{
border-color:#FF6633;
}
我们可以调用 clip.setCSSEffects( true ); 这样 Zero Clipboard 会自动为我们处理:将类 .hover 当成伪类 :hover 。

4、getHTML() 方法

如果你想自己实例一个Flash ,不用Zero Clipboard的附着方法,那么这个方法就可以帮上忙了。它接受两个参数,分别为Flash的宽度和高度。返回的是Flash对应的 HTML 代码。例如:

var html = clip.getHTML( 150, 20 );
你可以用 innerHTML 或直接 document.write(); 进行输出。
以下是测试输出的组装完毕的HTML 代码:

<embed id="ZeroClipboardMovie_1" src="zeroclipboard/ZeroClipboard.swf"
loop="false" menu="false" quality="best" bgcolor="#ffffff" width="150"
height="20" name="ZeroClipboardMovie_1" align="middle"
allowScriptAccess="always" allowFullScreen="false"
type="application/x-shockwave-flash"
pluginspage=http://www.macromedia.com/go/getflashplayer
flashvars="id=1&width=150&height=20" wmode="transparent" />
IE 的FlashJavaScript通信接口上有一个bug 。你必须插入一个object 标签到一个已存在的DOM元素中。并且在写入innerHTML之前请确保该元素已经appendChild方法插入到DOM 中。

Zero Clipboard 事件处理
Zero Clipboard 提供了一些事件,你可以自定义函数处理这些事件。Zero Clipboard 事件处理函数为 addEventListener(); 例如当 Flash 完全载入后会触发一个事件 “load” 。

clip.addEventListener( "load", function(client) {
alert("Flash 加载完毕!");
});
Zero Clipboard 会将 clip 对象作为参数传入。即上例中的 “client” 。
还有 “load” 也可以写成 “onLoad”,其他的事件也可以这样。
其他事件还包括:

mouseOver 鼠标移上事件
mouseOut 鼠标移出事件
mouseDown 鼠标按下事件
mouseUp 鼠标松开事件
complete 复制成功事件

其中 mouseOver 事件和 complete 事件比较常用。
前面说过,如果需要动态改变待复制的内容,那 mouseOver 事件就可以派上用场了。例如需要动态复制一个 id 为 test 的输入框中的值,我们可以在鼠标 over 的时候重新设置值。

clip.addEventListener( "mouseOver", function(client) {
var test = document.getElementById("test");
client.setText( test.value ); // 重新设置要复制的值
});
//复制成功:
clip.addEventListener( "complete", function(){
alert("复制成功!");
});
分享到:
评论

相关推荐

    h5复制到剪切板兼容ios浏览器

    ios+android+h5复制剪切板

    兼容浏览器的单击按钮复制到剪切板

    在网页开发中,实现“单击按钮复制到剪切板”的功能是一项常见的需求,尤其对于那些需要用户快速复制信息的场景。标题所提及的问题在于,这个功能在不同浏览器上可能存在兼容性问题,例如IE(Internet Explorer)...

    CSDN剪切板,跨浏览器复制

    标题中的"CSDN剪切板"是一个专门设计用于实现跨浏览器复制功能的工具,它旨在解决在不同浏览器间实现文本复制兼容性的问题。这个工具特别强调支持Internet Explorer(IE)、Chrome和Mozilla Firefox,这些都是市场上...

    简单实现兼容各大浏览器的js复制内容到剪切板

    总之,通过ZeroClipboard库,我们可以实现一个兼容大部分浏览器的JavaScript复制内容到剪贴板的功能。然而,随着Flash逐渐被淘汰,开发者应关注更现代的解决方案,如HTML5的clipboard API,以确保在未来的浏览器环境...

    ZeroClipboard跨浏览器复制到剪切板

    标题中的“ZeroClipboard跨浏览器复制到剪切板”是指一个JavaScript库,它的主要功能是允许用户在网页上通过点击按钮或者其他交互方式,实现文本内容复制到计算机的剪切板。这个功能在现代网页应用中非常常见,比如...

    jquery复制内容到剪切板

    在IT行业中,jQuery是一个广泛使用的...总的来说,"jquery复制内容到剪切板"涉及到了jQuery的事件处理、DOM操作以及浏览器提供的剪贴板API。通过理解这些技术,开发者可以为用户提供更加便捷、安全的复制体验。

    跨浏览器复制到剪切板

    在现代Web开发中,实现“跨浏览器复制到剪切板”的功能已经成为提升用户体验的重要一环。用户能够方便地复制网页中的文本,极大地提高了信息传递的效率。本篇将详细讲解如何利用JavaScript、jQuery以及第三方库...

    ZeroClipboard(jquery)实现跨浏览器兼容的“复制到剪切板”功能

    Zero Clipboard一个比较成熟的跨浏览器兼容的“复制到剪切板”功能库,需要放在项目里使用

    C# 复制图片 剪切板

    在本案例中,我们关注的是使用C#语言实现从网页中复制图片并将其存储到剪切板,以便用户可以方便地在不同应用程序之间进行粘贴,如微信或QQ。以下是对这个主题的详细讲解: 首先,我们需要理解剪切板是什么。剪切板...

    js jquery复制到剪切板,绝对能用,兼容360 ie 火狐等浏览器

    这个"js jquery复制到剪切板"的解决方案针对的是一个关键的问题:跨浏览器的兼容性,确保在360浏览器、Internet Explorer(IE)以及Firefox等不同浏览器上都能正常工作。 首先,我们要理解在JavaScript中实现复制...

    JS复制到剪切板插件(兼容主流浏览器,无需falsh)

    标题提到的"JS复制到剪切板插件"正是针对这一需求而设计的,它实现了在不依赖Flash的情况下,兼容主流浏览器的文本复制功能。 这个插件的核心在于利用了HTML5的`Clipboard API`,这是一个现代浏览器普遍支持的API,...

    复制到剪切板(浏览器兼容)

    总之,"复制到剪切板(浏览器兼容)"涉及到Web开发中的剪切板API和兼容性处理,`Clipboard API`是现代的标准方法,而`clipboard.js`库则为旧版浏览器提供了兼容性解决方案。通过合理使用这些工具和方法,我们可以...

    js clipboard 复制文字到剪切板功能

    这个API包括`navigator.clipboard.readText()`和`navigator.clipboard.writeText()`方法,用于读取和写入剪切板内容。这种方法的优点在于它遵循同源策略,确保了数据的安全性。 ### 3. 实现复制功能 使用Clipboard...

    javascript复制到剪切板

    总的来说,JavaScript实现复制到剪切板的功能涉及到对`Clipboard API`的理解和使用,以及考虑到浏览器兼容性问题。随着浏览器对新API的支持度提高,使用`navigator.clipboard`将成为主流。然而,对于老版本浏览器,...

    浏览器复制剪切板flash

    浏览器复制剪切板Flash技术是Web开发中一种用于实现用户在网页中复制和粘贴内容的解决方案。在早期的Web应用中,由于HTML、CSS和JavaScript的限制,尤其是在跨浏览器兼容性和安全性的考虑下,直接操作剪贴板的功能并...

    复制内容到剪切板 zclip使用

    标题 "复制内容到剪切板 zclip使用" 涉及的是一个JavaScript库,叫做ZeroClipboard,它允许用户实现浏览器中的“复制到剪贴板”功能。这个库通常与jQuery一起使用,因为提供的示例中包含了`jquery-1.7.2.min.js`,这...

    jquery插件czlip复制到剪切板

    对于不支持某些剪切板API的旧版浏览器,插件会使用替代方案,如模拟用户点击和复制行为,来确保跨平台和跨版本的兼容性。 **使用 czlip 插件** 使用`czlip`插件非常简单。首先,确保在你的HTML文档中引入jQuery库...

    FF--IE (兼容) 数据直接添加到剪切板

    这个给定的文件介绍了一个JavaScript函数`CopyContent`,该函数用于在Firefox(FF)和Internet Explorer(IE)浏览器中兼容性地将数据添加到用户的剪贴板。 首先,我们要理解JavaScript操作剪贴板的基本概念。在...

    JS_FF--IE (兼容_数据直接添加到剪切板)

    总结来说,"JS_FF--IE (兼容_数据直接添加到剪切板)" 是关于如何在JavaScript中实现跨浏览器的剪贴板操作,尤其是针对IE和Firefox这两种浏览器的不同实现方式。这个功能在网页应用中非常有用,可以让用户方便地复制...

Global site tag (gtag.js) - Google Analytics