Skip to content

复制到剪贴板(兼容 HTTP)

Updated: at 08:17 AM

安全上下文包括 localhost/127.0.0.1 和 htts 协议的网址。不安全上下文包括 http 协议的网址和内网的其他 ip 地址。

const copySqlTableStr2Clipboard = (content: string) => {
  // 处理要复制的内容
  const textToCopy = content.replace("http://", "").replace("https://", "");

  // 判断采用哪种方式复制到剪贴板
  if (navigator.clipboard && window.isSecureContext) {
    // 安全上下文,通过 navigator clipboard 复制
    return navigator.clipboard.writeText(textToCopy);
  } else {
    // 不安全上下文,通过 text area 复制
    const textArea = document.createElement("textarea");
    textArea.value = textToCopy;
    // 使text area不在viewport,同时设置不可见
    textArea.style.position = "absolute";
    textArea.style.opacity = "0";
    textArea.style.left = "-999999px";
    textArea.style.top = "-999999px";
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();
    document.execCommand("copy");
    textArea.remove();
  }
};