Javascript:在Firefox上查询剪贴板权限不起作用

时间:2018-12-11 09:23:17

标签: javascript firefox permissions clipboard

我正在尝试通过对焦点DOM元素执行“复制”命令来修改剪贴板的内容。但是,新内容来自服务器,来自Websocket,然后在非直接用户交互的回调中对其进行处理。

由于它不是由用户触发的,因此不允许执行Firefox's MDM website中指定的修改剪贴板内容的操作。错误消息是:

  

document.execCommand('cut'/'copy')被拒绝,因为它没有   从一个运行时间较短的用户生成的事件处理程序内部调用。

为解决此问题,同一页面建议通过navigator.permissions.query()请求浏览器的权限:

navigator.permissions.query({name: "clipboard-write"}).then(result => {
  if (result.state == "granted" || result.state == "prompt") {
    /* write to the clipboard now */
  }
});

但是,以为文章中的权限使用了不同的名称:

  • clipboard-write
  • clipboard-read
  • clipboardWrite
  • clipboardRead

在同一站点中,权限文章显示了browser compatibility table,其中说Firefox支持版本51的clipboardWrite和版本54的clipboardRead

问题是这些权限在Firefox上均不起作用(我正在使用Firefox 63)。永远不会调用查询回调。我尝试了四个许可名称,但没有任何运气。

为确保该机制正常运行,我测试了其他权限,例如notifications,该权限运行正常(显示“提示”)

navigator.permissions.query({name: "notifications"}).then(result => {
  alert(result.state)
});

所以我的问题是:请求权限时我做错什么了吗?还是更改了此权限?

0 个答案:

没有答案