项目要实现复制内容到剪贴板,想到使用JS实现,刚开始使用window.clipboardData,但是window.clipboardData只有IE能够实现剪贴,其他浏览器不行。
后面试过试用js插件——ZeroClipboard,据说兼容各大浏览器,但是由于自己使用的前端框架问题,标签不能使用这个的标签,后来就使用了execCommand来实现这个功能,兼容性和注意问题如下,
/**
* 复制文本到剪贴板
*/
function copyToClipBoard(){
var text= "Hello World....";//复制的内容
/**如果内容是界面的一个元素,可以直接读取元素getElementById()
这里是因为界面没有input元素,所以自己创建一个元素来作为载体把内容复制到剪贴板
**/
var inputEle = document.createElement("input");//创建一个input元素
//判断并控制整个HTML文档可编辑
if(!(document.designMode == "on")){
document.designMode = "on";
}
inputEle.value = text;//把复制的内容赋给input的内容
document.body.appendChild(inputEle);//把input元素绑定到document,不然操作不到
// 判断元素是否能被选中
if (inputEle&&inputEle.select) {
// 选择文本
// inputEle.focus();
inputEle.select(); //或: inputEle.setSelectionRange(0, inputEle.value.length);
try {
// 复制文本
document.execCommand('copy');
} catch (err) {
alert('由于浏览器安全设置,不支持复制功能!!!');
}
inputEle.blur();//失去焦点
inputEle.style.display="none";//隐藏元素
document.body.removeChild(inputEle);//删除元素
document.designMode = "off";//文档设为不可编辑,否则界面的其他元素可能被影响
alert('复制成功');
}
}