JavaScript를 사용하여 Firefox, Safari 및 Chrome에서 클립 보드를 읽을 수 있습니까?
-
04-07-2019 - |
문제
JavaScript를 사용하여 클립 보드의 내용을 읽으려고합니다. Internet Explorer를 사용하면 기능을 사용하는 것이 가능합니다
window.clipboardData.getData("Text")
Firefox, Safari 및 Chrome에서 클립 보드를 읽는 비슷한 방법이 있습니까?
해결책
Safari는 클립 보드를 읽는 동안 지원합니다 onpaste
이벤트 :
당신은 다음과 같은 일을하고 싶습니다.
someDomNode.onpaste = function(e) {
var paste = e.clipboardData && e.clipboardData.getData ?
e.clipboardData.getData('text/plain') : // Standard
window.clipboardData && window.clipboardData.getData ?
window.clipboardData.getData('Text') : // MS
false;
if(paste) {
// ...
}
};
다른 팁
온라인 스프레드 시트 훅 CTRL+C, Ctrl+V 이벤트 및 숨겨진 Textarea 컨트롤로 초점을 전송하고 이벤트가 페이스트 용으로 완료된 후에는 사본 또는 읽기 내용물로 원하는 새로운 클립 보드 내용으로 설정을 설정합니다.
아니. 그리고 해킹 (예 : 기존 플래시)을 찾으면 그것에 의존하지 않습니다.
클립 보드에서 왜 읽고 싶은지 물어봐도 될까요? 사용자가 클립 보드 내용을 따라 전달하려면 붙여 넣기 만하면됩니다.
사람들은 숨겨진 플래시 요소를 사용하여 언급 한 브라우저의 클립 보드 데이터를 읽습니다.
@agsamek 제안을 사용하여 약간의 테스트를 만들어 내고 작동하게했습니다. 제 경우에는 붙여 넣은 입력에 대한 신선한 Pageload를 기다려야하므로 뷰 외 텍스트에 중점을두고 거기에서 텍스트를 읽습니다.
이를 확장하여 특정 키 (붙여 넣기 조합)를 듣고 숨겨진 필드에 집중할 수 있습니다. 마지막으로 집중된 요소에 다시 초점을 맞추고 콘텐츠를 붙여 넣어야한다고 생각하기 때문에 더 많은 작업이 수행 될 것입니다.
내 유스 케이스에게는 이것이 최신 크롬과 파이어 폭스에서 작동하기에 충분했습니다. 제안을 환영합니다.
https://jsfiddle.net/wuestkamp/91dxjv7s/11/
$(function () {
$('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');
var $hiddenTextbox = $('#hidden_textbox');
$hiddenTextbox.focus();
$(document).on('paste', function () {
setTimeout(function () {
var val = $hiddenTextbox.val();
console.log('pasted: ' + val);
}, 50);
});
});