js Copy剪切板
第一种 clipboardjs
需要以来demo元素,自动添加事件,
我想要的是直接setText(txt)这种,在方法内直接执行copy文本
第二种 js 网站上找到的
jS原生,火狐,chrome和IE都支持的复制剪切板功能window.clipboardData.setData
function copyToClipboard(txt) {
if (window.clipboardData) {
window.clipboardData.clearData();
window.clipboardData.setData("Text", txt);
alert("<strong>复制</strong>成功!")
} else if (navigator.userAgent.indexOf("Opera") != -1) {
window.location = txt;
alert("<strong>复制</strong>成功!");
} else if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将 'signed.applets.codebase_principal_support'设置为'true'");
}
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip)
return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans)
return;
trans.addDataFlavor('text/unicode');
var str = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
var copytext = txt;
str.data = copytext;
trans.setTransferData("text/unicode", str, copytext.length * 2);
var clipid = Components.interfaces.nsIClipboard;
if (!clip)
return false;
clip.setData(trans, null, clipid.kGlobalClipboard);
alert("<strong>复制</strong>成功!")
}else if(copy){
copy(txt);
alert("<strong>复制</strong>成功!")
}
}
发现最后else if(copy) 中,始终copy是false,在谷歌浏览器控制台中又是正常,项目是vue项目,所以放弃这种方法
第三种,也就是最满意的,在伟大的stackoverflow上发现的
util.copyText=function(text) {
// debugger
var textArea = document.createElement("textarea");
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Fallback: Copying text command was ' + msg);
} catch (err) {
console.error('Fallback: Oops, unable to copy', err);
}
document.body.removeChild(textArea);
};
分析第一种clipboardjs的代码,最终也是调用document.exeCommand方法实现copy,现在正在用
来自 <https://note.youdao.com/md/?defaultMode=view&fileId=983E73AA42E14650883042618FE6B738>
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post YES开发框架