我正在使用Tiptap构建RichText编辑器,其中一个菜单按钮在单击时有以下操作:

  async function handleHtmlPaste() {
    // editor?.chain().focus().run();
    const text = await navigator.clipboard.readText();
    // let text = `<h1 style="margin-left: 0px!important;">Test</h1><h2 style="margin-left: 0px!important;">Basic text formatting</h2>`;
    editor
      ?.chain()
      .focus()
      .command((props) => {
        props.view.pasteHTML(text);
        return true;
      });

    return true;
  }

不幸的是,我收到了以下错误:unauect(In Promise)DOMException:Read权限被拒绝.原因是什么?

推荐答案

当您拨打navigator.clipboard.readText()浏览器时,会弹出如下消息,

网站希望看到剪贴板上的文本和图像?

enter image description here

并询问用户的许可是allow还是deny.出现此错误的原因有3个:

  1. 用户denied发出访问请求.
  2. 在OS级,浏览器doesn't具有访问剪贴板的许可.(主要发生在MacOS号公路上)
  3. 如果是Chromium Extension,您可能需要在manifest.json中添加permissions以下的clipboardRead

另外,判断当前站点的权限状态

enter image description here

Javascript相关问答推荐

JavaScript寻求、寻求和时间更新事件||Mux

Vue.js使用特定索引值的数据更新html

Math.random超出了最大调用堆栈

Vue v模型检测父参考更改

即使设置了父级的最大高度,固定位置的分区内容也不会滚动?

如何在react + react路由域名中使用DeliverBrowserRouter?

nPM审计始终发现0个漏洞

如何按预期聚合SON数据?

将数据从strapi提取到next.js,但响应延迟API URL

react/redux中的formData在expressjs中返回未定义的req.params.id

类型自定义lazy Promise. all

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

D3 Scale在v6中工作,但在v7中不工作

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

如何从HTML对话框中检索单选项组的值?

在Matter.js中添加从点A到另一个约束的约束

如何防止ionic 输入中的特殊字符.?

Docent.cloneNode(TRUE)不克隆用户输入

Phaser3 preFX addGlow不支持zoom