侧边栏壁纸
博主昵称
fastmock技术社区

用心做好每一件你选择要做的事

  • 累计撰写 103 篇文章
  • 累计收到 26 条评论

js复制和粘贴内容

admin
2022-03-19 / 0 评论 / 562 阅读 / 正在检测是否收录...

复制-将指定内容添加到粘贴板

/**
 * copyToClip
 * @param content
 * @param callback
 */
export const copyToClip = (content: string, callback?: () => void) => {
  var aux = document?.createElement?.('input');
  aux?.setAttribute?.('value', content);
  document?.body?.appendChild?.(aux);
  aux?.select();
  document?.execCommand('copy');
  document?.body?.removeChild?.(aux);
  return callback?.();
};

粘贴 js不能直接读取粘贴板内容,下面的代码在多数环境下不生效

const text = await navigator?.clipboard?.readText?.();

我们采取变通的方案来处理。
1、在页面中添加一个input输入框,将其绝对定位到页面中不可见的位置

<input
  type='text'
  id='text-all'
  key='text-all'
  onPaste={(e) => handlePaste(e)}
  style={{ position: 'absolute', top: -10000, zIndex: 10000 }}
/>

监听到ctrl-v事件时,先让上面的input获得焦点,再手动触发他的paste事件,这时input会填充粘贴板中的内容

const hideInput: HTMLInputElement = document.getElementById('text-all') as any;
hideInput?.focus();
hideInput?.dispatchEvent(new Event('paste', { bubbles: true }));

给这个input添加onPaste事件,在事件处理函数中获取input的内容,或者获取粘贴板的内容

const clipboardData = e?.clipboardData || e.originalEvent?.clipboardData;
0

评论 (0)

OωO
  • ::(呵呵)
  • ::(哈哈)
  • ::(吐舌)
  • ::(太开心)
  • ::(笑眼)
  • ::(花心)
  • ::(小乖)
  • ::(乖)
  • ::(捂嘴笑)
  • ::(滑稽)
  • ::(你懂的)
  • ::(不高兴)
  • ::(怒)
  • ::(汗)
  • ::(黑线)
  • ::(泪)
  • ::(真棒)
  • ::(喷)
  • ::(惊哭)
  • ::(阴险)
  • ::(鄙视)
  • ::(酷)
  • ::(啊)
  • ::(狂汗)
  • ::(what)
  • ::(疑问)
  • ::(酸爽)
  • ::(呀咩爹)
  • ::(委屈)
  • ::(惊讶)
  • ::(睡觉)
  • ::(笑尿)
  • ::(挖鼻)
  • ::(吐)
  • ::(犀利)
  • ::(小红脸)
  • ::(懒得理)
  • ::(勉强)
  • ::(爱心)
  • ::(心碎)
  • ::(玫瑰)
  • ::(礼物)
  • ::(彩虹)
  • ::(太阳)
  • ::(星星月亮)
  • ::(钱币)
  • ::(茶杯)
  • ::(蛋糕)
  • ::(大拇指)
  • ::(胜利)
  • ::(haha)
  • ::(OK)
  • ::(沙发)
  • ::(手纸)
  • ::(香蕉)
  • ::(便便)
  • ::(药丸)
  • ::(红领巾)
  • ::(蜡烛)
  • ::(音乐)
  • ::(灯泡)
  • ::(开心)
  • ::(钱)
  • ::(咦)
  • ::(呼)
  • ::(冷)
  • ::(生气)
  • ::(弱)
  • ::(狗头)
泡泡
阿鲁
颜文字
取消
欢迎阅读『js复制和粘贴内容』