angularjs-兼容各种浏览器的复制到剪切板功能的代码

实现原理就是:动态生成隐藏文本域,把要复制的内容放到该文本域,然后依次执行DOM里的选中,复制功能就可以(有些代码是非相关的可以忽略)。注意,不要在非直接点击触发的函数里用document.execCommand('copy')的方法,因为浏览器的安全机制会禁止使用。另外可以加判断ta是否已经生成过,如果生成过,直接用就可以(

  if(ta){return ta;}


方法代码:

copyJson(claimId) {
  var self = this;
    var copyClaimJsonUrl = this.urlUtils.getBackendApiUrl("claimDetail/copyClaimJson");
    var model = "";
    $.ajax({
      type: "get",
      dataType: "json",
      data: {"claimId":  claimId},
      async:false,
      url: copyClaimJsonUrl,
      success: function (data) {
        if(data){
          self.claimJson = JSON.stringify(data);
        }

      }
    });

  var ta =this.createTempTextArea();//创建文本域
  document.body.appendChild(ta);  //后缀到DOM
  ta.value = this.claimJson; //赋值
  ta.select();                 //选中
  var success =document.execCommand('copy');//复制
  layer.msg("复制成功!");
}
动态生成隐藏文本域的代码:
  
createTempTextArea = function () {
  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';
  var ta;
  ta = document.createElement('textarea');
  // Prevent zooming on iOS
  ta.style.fontSize = '12pt';
  // Reset box model
  ta.style.border = '0';
  ta.style.padding = '0';
  ta.style.margin = '0';
  // Move element out of screen horizontally
  ta.style.position = 'absolute';
  ta.style[isRTL ? 'right' : 'left'] = '-9999px';
  // Move element to the same position vertically
  var /** @type {?} */ yPosition = window.pageYOffset || document.documentElement.scrollTop;
  ta.style.top = yPosition + 'px';
  ta.setAttribute('readonly', '');
  return ta;
};
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值