Firefox 용 WebExtension을 작성하고 있습니다. 그것에서, 나는 webextension과 클립 보드 사이에 임의의 텍스트를 복사 할 수 있기를 원합니다. 지금까지 문서 (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard)에서 볼 수있는 것처럼 자바 스크립트 변수와 클립 보드간에 데이터를 전송할 수있는 방법이 없습니다. DOM 요소를 우회해야합니다. Firefox webextension not copying to clipboard이Webextension : 클립 보드의 텍스트를 입력 요소에 붙여 넣을 수 없습니다.
function 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();
을 더 광택이없는 "붙여 넣기 결과"는 항상 "true"이고 "결과"는 "디버깅을위한 더미 콘텐츠"입니다. 더미 필드를 초기화하는 데 사용한 것과 변함이 없습니다).
Windows 7 (64 비트)에서 Firefox 57.0.2 (64 비트)로 테스트하고 있습니다.
나는 분명한 뭔가를 놓치고 있습니까? 이것은 왜 한 방향으로 작용 하나 다른 방향으로 작용하지 않는 것입니까?
자바 스크립트 콘솔 (확장 프로그램을 테스트하는 탭이나 전체 브라우저 콘솔에서는 볼 수 없음)은 오류를 표시하지 않습니다.