Firefox用のWebExtensionを作成しています。その中で、WebExtensionとクリップボードの間で任意のテキストをコピーできるようにしたい。私がドキュメント(https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard)から見ることができる限り、javascript変数とクリップボードの間でデータを転送する方法はありません。DOM要素を迂回する必要があるようです。私はその後、Webextension:クリップボードのテキストを入力要素に貼り付けることができません
でそれを呼び出すことができます Firefox webextension not copying to clipboardfunction copy(contentToCopy) {
var txtToCopy = document.createElement('input');
txtToCopy.style.left = '-300px';
txtToCopy.style.position = 'absolute';
txtToCopy.value = contentToCopy;
document.body.appendChild(txtToCopy);
txtToCopy.select();
console.log("Copying ", txtToCopy.value);
var res = document.execCommand('copy');
console.log("Copy result ", res);
txtToCopy.parentNode.removeChild(txtToCopy);
}
:クリップボードにテキストをコピーするための
は、私はこの質問に記載されているものと非常に似てダミー方法を作ってみました
copy('any arbitrary text');
と完全に動作します。
しかし、私も同じようにクリップボードの内容にアクセスする必要がある、それが仕事を得ることはできません。
function paste() {
var txtToPaste = document.createElement('input');
txtToPaste.style.left = '-300px';
txtToPaste.style.position = 'absolute';
txtToPaste.value = 'dummy content for debugging';
document.body.appendChild(txtToPaste);
txtToPaste.focus();
txtToPaste.select();
var res = document.execCommand('paste');
var result = txtToPaste.value;
console.log("Paste result ", res);
console.log('Pasted text', result);
console.log('txtToPaste', txtToPaste);
txtToPaste.parentNode.removeChild(txtToPaste);
return result;
}
私は私のmanifest.jsonをファイルに適切なアクセス権をも要求しています
"permissions": ["clipboardRead" ]
私は、このようなメソッドを呼び出そう:
var dataFromClipboard = paste();
しかし、ないマット「貼り付け結果」は常に「真」であり、「結果」は「デバッグのためのダミーコンテンツ」である(すなわち、私がダミーフィールドを初期化するために使用したものと同じ)。
Windows 7(64ビット)のFirefox 57.0.2(64ビット)でこれをテストしています。
明らかなものがありませんか?なぜこれはある方向では機能しますが、他の方向では機能しませんか?
JavaScriptコンソール(拡張機能がテストされているタブでもグローバルブラウザコンソールでもない)はエラーを表示していません。