用js写了复制事件,使用模拟点击没用,人手动点击有效果

JavaScript07

用js写了复制事件,使用模拟点击没用,人手动点击有效果,第1张

这是因为当发出copy命令时,上面创建的input节点很可能还未创建完毕(这是个异步过程),所以就失败了。如果你的目的是想把文本复制到剪贴板,建议用下面的代码,兼容大部分浏览器,而且无需创建Input节点,一切在静默中进行:

function copyToClipboard(s){

   if(window.clipboardData){

      window.clipboardData.setData('text',s)

   }else{

      document.oncopy=function(e){

         e.clipboardData.setData('text',s)

         e.preventDefault()

         document.oncopy=null

      }

      document.execCommand('Copy')

   }

}

用法举例:

copyToClipboard('HIQrwy88iV')

如果你只是想实现复制id为txt的div中的文本的话:

$("#cpy").click(function(){//注册复制的点击事件

alert('复制成功!')//因为根本就不用复制功能只是一个从txt_div中取值的过程

})

$("#past").click(function(){

$("textarea").val($("#txt").text())

alert('粘贴成功!')

})

思路:你用textarea的select()选中,document.execCommand("Copy")执行复制到剪切板,

实现:新建一个textarea,把要复制的字段,放到textarea中

function copy(ele){

var textarea = document.creatElement("textarea")

textarea.innerHTML = ele.innerHTML

textarea.select()

document.execCommand("Copy")

alert("成功了,请按Ctrl+v进行复制")

}