1

我想開發一個Firefox擴展,涉及將圖像複製到剪貼板。在過去,看起來這是使用clipboard addon sdk完成的。但是,這已被棄用,所以我需要找到另一種方法將圖像複製到剪貼板。 docs mentioned使用document.execCommand('copy'),但我不能得到那個工作複製圖像。firefox webextension替代插件剪貼板sdk複製圖像

從網上搜索看來,它通常不可能在JavaScript中將圖像複製到剪貼板,但我想知道Firefox是否有某種webextensions API來訪問剪貼板。

編輯:這裏是我一直在用,試圖複製圖片代碼:

document.body.appendChild(img); 
let range = document.createRange(); 
range.setStartBefore(img); 
range.setEndAfter(img); 
range.selectNode(img); 
window.getSelection().addRange(range); 
var successful = document.execCommand('copy'); 
window.getSelection().removeAllRanges(); 
document.body.removeChild(img); 

img是一個HTML圖像元素。 運行時沒有任何反應,但是

+0

請[編輯]這個問題是關於話題:包括[ mcve],它重複了這個問題。對於Chrome擴展程序或Firefox WebExtensions,這通常意味着包含您的* manifest.json *以及一些背景,內容和/或彈出式腳本/ HTML。尋求調試幫助的問題(「爲什麼代碼不按我想要的方式工作?」)必須包括:(1)期望的行爲,(2)特定問題或錯誤,以及(3)重現它所需的最短代碼*在問題本身*。請參閱:[我可以在這裏詢問哪些主題?](http://stackoverflow.com/help/on-topic)和[問]。 – Makyen

回答

0

WebExtensions有setImageData()

複製與擴展捆綁的圖像:

// requires the API permission "clipboardWrite" 

fetch(browser.runtime.getURL('image.png')) 
.then(response => response.arrayBuffer()) 
.then(buffer => browser.clipboard.setImageData(buffer, 'png')); 

clipboard.setImageData() - Mozilla | MDN

+1

如果鏈接頁面更改,則僅鏈接答案可能會失效。因此,最好在這裏包含答案的重要部分,並提供參考鏈接。引用最相關的關於'setImageData'如何工作的部分,可以提高答案的長期價值。 – adiga

+0

@adiga謝謝。我在我的答案中添加了示例。 – user4352571