Zero Clipboard : [项目主页] [ZeroClipboard下载] [在线演示]然后把在你要使用复制功能的页面中引入Zero Clipboard的js文件:ZeroClipboard.js 如下代码:
注意:以上 ZeroClipboard.js, ZeroClipboard.swf需要放在同一路径下。如果不在同一路径,可使用ZeroClipboard.setMoviePath( “Flash路径” );来设置ZeroClipboard.swf 地址
这样,这样基本功能实现了,点击按钮就可以复制设置好的文本了。你可能注意到了,待复制的文本是固定的,如果想要动态改变的怎么办,比如复制一个输入框中的内容。不用担心,下面会讲到的。var clip = new ZeroClipboard.Client(); // 新建一个对象 clip.setHandCursor( true ); // 设置鼠标为手型 clip.setText("哈哈"); // 设置要复制的文本。 // 注册一个 button,参数为 id。点击这个 button 就会复制。 //这个 button 不一定要求是一个 input 按钮,也可以是其他 DOM 元素。 clip.glue("copy-botton"); // 和上一句位置不可调换
2、hide() 和 show() 方法 这两个方法可以隐藏和显示Flash按钮 。其中 show() 方法会调用 reposition() 方法。 3、setCSSEffects() 方法 当鼠标移到按钮上或点击时,由于有Flash按钮的遮挡,所以像 css “:hover”, “:active” 等伪类可能会失效。setCSSEffects() 方法就是解决这个问题。首先我们需要将伪类改成类,比如:$(window).resize(function(){ clip.reposition(); });
我们可以调用 clip.setCSSEffects( true ); 这样 Zero Clipboard 会自动为我们处理:将类 .hover 当成伪类 :hover 。 4、getHTML() 方法 如果你想自己实例一个Flash ,不用Zero Clipboard的附着方法,那么这个方法就可以帮上忙了。它接受两个参数,分别为Flash的宽度和高度。返回的是Flash对应的 HTML 代码。例如:#copy-botton:hover{ border-color:#FF6633; } // 可以改成下面的 ":hover" 改成 ".hover" #copy-botton.hover{ border-color:#FF6633; }
你可以用 innerHTML 或直接 document.write(); 进行输出。 以下是测试输出的组装完毕的HTML 代码:var html = clip.getHTML( 150, 20 );
IE 的FlashJavaScript通信接口上有一个bug 。你必须插入一个object 标签到一个已存在的DOM元素中。并且在写入innerHTML之前请确保该元素已经appendChild方法插入到DOM 中。
Zero Clipboard 会将 clip 对象作为参数传入。即上例中的 “client” 。 还有 “load” 也可以写成 “onLoad”,其他的事件也可以这样。 其他事件还包括:clip.addEventListener( "load", function(client) { alert("Flash 加载完毕!"); });
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("复制成功!"); });