현재 클립 보드 콘텐츠를 받으시겠습니까? [닫은]


107

내 스크립트가 클립 보드의 내용을 감지하고 사용자의 입력없이 페이지가 열릴 때 텍스트 필드에 붙여 넣는 방법을 알고 싶습니다. 어떻게 할 수 있습니까?


사용자가 텍스트를 복사 할 때 일종의 플래시 백엔드를 사용하지 않는 한 사용자의 클립 보드에 무엇이 있는지 실제로 알 수 없습니다. ------- 업데이트 : 여기에 정확한 답변
Naftali aka Neal



답변:


73

window.clipboardData.getData('Text')일부 브라우저에서 작동합니다. 그러나 작동하는 많은 브라우저는 웹 페이지에서 클립 보드에 액세스 할 수 있는지 여부를 사용자에게 묻습니다.


17
Internet Explorer 이외의 다른 브라우저에서도 작동합니까?
Anderson Green

6
아마 아닐 것입니다. 이 질문을 참조하십시오 : stackoverflow.com/questions/400212/…
Dave

7
여기 호환성을 확인할 수 있습니다 caniuse.com/#search=clipboardData
세르게이 Novikov 보낸

1
더 나은 솔루션은 노드 개체를 사용하는 것이지만 창 개체는 사용하지 않는 것입니다. 참조 여기
rplaurindo

Keepass와 보안이 걱정됩니다. 이 앱을 사용하면 내 암호를 클립 보드에 복사 할 수 있습니다.
René Winkler

69

를 통해 새 클립 보드 API를 사용합니다 navigator.clipboard. 다음과 같이 사용할 수 있습니다.

navigator.clipboard.readText()
  .then(text => {
    console.log('Pasted content: ', text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

또는 비동기 구문 :

const text = await navigator.clipboard.readText();

이렇게하면 사용자에게 권한 요청 대화 상자가 표시되므로 재미있는 비즈니스가 불가능합니다.

위의 코드는 콘솔에서 호출하면 작동하지 않습니다. 활성 탭에서 코드를 실행할 때만 작동합니다. 콘솔에서 코드를 실행하려면 시간 제한을 설정하고 웹 사이트 창을 빠르게 클릭 할 수 있습니다.

setTimeout(async () => {
  const text = await navigator.clipboard.readText();
  console.log(text);
}, 2000);

Google 개발자 문서 에서 API 및 사용법에 대해 자세히 알아보세요 .

투기


18
콘솔에서 호출하면 항상 오류가 발생합니다. 그러나 페이지의 버튼을 누를 때와 같은 직접적인 사용자 작업 에서는 작동합니다.
Klesun

이것은 클립 보드에 서식있는 텍스트가있는 경우에도 일반 텍스트 만 반환하는 것 같습니다. 내가 어떻게 그것을 얻을 수있는 \?
마이클

@Michael는 이미지와 다른 사람에 대한 지원은 (76) 마지막 크롬 버전에서 추가되었다
iuliu.net

으로 래핑 setTimeout한 다음 페이지를 다시 클릭하여 콘솔에서 테스트 할 수 있습니다 .
edbentley

18

당신이 사용할 수있는

window.clipboardData.getData('Text')

IE에서 사용자의 클립 보드 내용을 가져옵니다. 그러나 다른 브라우저에서는 클립 보드에 액세스하기위한 표준 인터페이스가 없기 때문에 콘텐츠를 가져 오기 위해 플래시를 사용해야 할 수 있습니다. 이 플러그인 Zero Clipboard를 사용해 볼 수 있습니다.


1
링크가 잘 작동합니다 (다시)
stephanos

5
ZeroClipboard은 당신이 복사 할 수 있습니다 읽을 클립 보드 에서 그것.
DSimon

4

다음은 선택한 콘텐츠를 제공하고 클립 보드를 업데이트합니다.

복사 이벤트로 요소 ID를 바인딩 한 다음 선택한 텍스트를 가져옵니다. 텍스트를 바꾸거나 수정할 수 있습니다. 클립 보드를 가져 와서 새 텍스트를 설정합니다. 정확한 형식을 얻으려면 유형을 "text / hmtl"로 설정해야합니다. 요소 대신 문서에 바인딩 할 수도 있습니다.

document.querySelector('element').bind('copy', function(event) {
  var selectedText = window.getSelection().toString(); 
  selectedText = selectedText.replace(/\u200B/g, "");

  clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
  clipboardData.setData('text/html', selectedText);

  event.preventDefault();
});

21
이 사이트에 오신 것을 환영합니다! 질문에 답변 해주셔서 감사합니다. 그러나 귀하의 답변은 실제로 OP의 질문에 대한 답변이 아닙니다. 문제는 클립 보드에서 콘텐츠를 검색 하여 페이지를 열 때 어딘가에 붙여 넣는 것입니다. 또한 질문에 jquery 태그 가 없기 때문에 jQuery를 사용한 답변에는 라이브러리 (jQuery)가 사용된다는 메모가 포함되어야합니다.
KarelG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.