Safari 剪贴板错误“TypeError:未定义不是对象”

Yer*_*nov 8 javascript safari mobile-safari reactjs

仅在safari浏览器中出现错误:

类型错误:未定义不是对象(评估“navigator.clipboard.writeText”)

我正在传递我当前的链接。可能是什么问题呢?

copyLink = e => {
  e.preventDefault();
  console.log(document.location.href)
  navigator.clipboard
    .writeText(document.location.href)
    .then(() => {
      this.setState({
        urlIsCopied: true
      });
    })
    .catch(e => console.error(e));
};
Run Code Online (Sandbox Code Playgroud)

rde*_*ela 11

(移动)Safari 中此 API存在安全限制,其中之一是它必须在使用 保护的网站上执行https,因此无法在 Safari 上运行localhost,例如:

\n
\n
    \n
  • 该 API 仅限于安全上下文,这意味着网站navigator.clipboard不存在该 API http://
  • \n
  • 写入剪贴板的请求必须在用户手势期间触发。对用户手势(例如事件处理程序)clipboard.writeclipboard.writeText用户手势范围之外的调用将导致立即拒绝 API 调用返回的承诺。\n[\xe2\x80\xa6]"click""touch"
  • \n
\n
\n


小智 1

你能看看这个插件吗copy-to-clipboard?只需使用下面的代码就可以了。

copy('Text to Copy!');
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助!