实现原理:
利用透明的 flash 覆盖在复制按钮上,点击 flash,将复制内容传入到 flash 中,再通过 flash 把传入的内容写到剪贴板上。
使用方法:
需要把 flash 和 js 放到同一路径下,然后引用 js 即可。
clipboardData 对象只有 ie 浏览器认识。该对象有 3 个方法:clearData,getData 和 setData。这 3 个方法网上都有介绍,在这里我就不多说了。
最后需要在调用方法加上判断,ie 和 非ie,具体代码如下:
function clipboard(text,button,msg,parent) {
if(window.clipboardData){ //for ie
var copyBtn = document.getElementById(button);
copyBtn.onclick = function(){
window.clipboardData.setData('text',text);
alert(msg);
}
}else{
var clip = new ZeroClipboard.Client(); // 新建一个对象
clip.setHandCursor( true );<span style="font-family: 'Courier New'; white-space: pre-wrap; margin: 0px; padding: 0px; line-height: 1.8; color: rgb(0, 128, 0);">//</span><span style="font-family: 'Courier New'; white-space: pre-wrap; margin: 0px; padding: 0px; line-height: 1.8; color: rgb(0, 128, 0);">设置鼠标手型</span>
clip.setText(text); // 设置要复制的文本。
clip.addEventListener( "mouseUp", function(client) {
alert(msg);
});
// 注册一个 button,参数为 id。点击这个 button 就会复制。
//这个 button 不一定要求是一个 input 按钮,也可以是其他 DOM 元素。
clip.glue(button,parent); // 和上一句位置不可调换
}
return false;
}
参数说明:
1、如果 flash 和 js 不在同一路径,可使用 ZeroClipboard.setMoviePath( “Flash路径” ); 来设置 flash 路径
text:需要复制的文本内容
button:需要绑定复制功能的元素 id
msg:复制内容后 alert 的信息
parent:复制按钮(DOM 元素)所在的父层的 id,如果没有该 id,默认为 body