DataTransfer.mozSetDataAt()抛出SecurityError

时间:2017-08-30 19:44:57

标签: javascript html5 firefox

我尝试在jsfiddle DataTransfer.mozSetDataAt()中使用script方法并抛出

SecurityError: The operation is insecure.

为什么?这种方法仅用于扩展(不允许在常规网页中使用)吗?

使用的浏览器:Firefox 55.0.2

1 个答案:

答案 0 :(得分:0)

这里似乎抛出的是您使用私有'application/x-moz-file'数据类型。

如果您使用真实的MIME类型('image/png'),那么它将不会抛出,您的文件将添加到dataTransfer对象中:

const button = document.querySelector('button');
const image = document.querySelector('img');
let file = null;
button.addEventListener('click', () => {
  document.execCommand('copy') 
})

document.addEventListener('copy', (event) => {
  event.clipboardData.mozSetDataAt('image/png', file, 0);
  console.log(event.clipboardData.files)
})

// to avoid the big dataURI in post
fetch("https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Mozilla_Firefox_3.5_logo_256.png/145px-Mozilla_Firefox_3.5_logo_256.png")
  .then(resp => resp.blob())
  .then(blob => file = new File([blob], 'firefox.png'));
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Mozilla_Firefox_3.5_logo_256.png/145px-Mozilla_Firefox_3.5_logo_256.png" width="20" height="20"/>

<button>copy</button>

相关问题