javascript - JS 获取chrome剪切板数据
PHP中文网
PHP中文网 2017-04-11 09:46:39
[JavaScript讨论组]

希望使用JS获取chrome浏览器中剪切板的数据,数据为字符串类型,求大神帮忙解答...

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
迷茫

整理自之前自己的一段代码,保证了绝大部分的兼容性。

uploader上传用你们自己组件吧

// 粘贴事件的监听
ele.on('paste', pasteHandle);
// 粘贴复制上传等功能
function pasteHandle(ev) {
  let cbd = ev.originalEvent.clipboardData;
  let ua = window.navigator.userAgent;

  ev.stopPropagation();
  ev.preventDefault();

  // 如果是 Safari 直接 return
  if (!cbd || !cbd.items || !cbd.types) return;

  // Mac平台下Chrome49版本以下 复制Finder中的文件的Bug Hack掉
  if (cbd.items.length === 2 && cbd.items[0].kind === 'string' && cbd.items[1].kind === 'file' && cbd.types.length === 2 && cbd.types[0] === 'text/plain' && cbd.types[1] === 'Files' &&
    ua.match(/Macintosh/i) && ~~(ua.match(/Chrome\/(\d{2})/i)[1]) < 49) return;

  for (let i = 0, len = cbd.items.length; i < len; i++) {
    let item = cbd.items[i];
    // 文件类型上传
    if (item.kind === 'file') {
      let blob = item.getAsFile();
      if (blob.size === 0) return;
      let fileName = cbd.getData('text/plain');
      // 上传文件
      return uploader(blob, { name: fileName });
    }
  }

  let text = cbd.getData('text/plain');
  // 复制文字
  if (text) insertTextCMD(text);
}
function insertTextCMD(text) {
  if (document.body.createTextRange) {
    let textRange;
    if (document.selection) {
      textRange = document.selection.createRange();
    } else if (window.getSelection) {
      let sel = window.getSelection();
      let range = sel.getRangeAt(0);

      // 创建临时元素,使得TextRange可以移动到正确的位置
      let tempEl = document.createElement('span');
      tempEl.innerHTML = '&#FEFF;';
      range.deleteContents();
      range.insertNode(tempEl);
      textRange = document.body.createTextRange();
      textRange.moveToElementText(tempEl);
      tempEl.parentNode.removeChild(tempEl);
    }
    textRange.text = text;
    textRange.collapse(false);
    textRange.select();
  } else {
    // Chrome之类浏览器
    document.execCommand('insertText', false, text);
  }
}

自己都想给自己一个赞加收藏,23333

黄舟

ZeroClipboard

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号