이틀간 웹 프론트엔드 작업을 하던 중, js를 통해 텍스트 복사를 구현해야 할 필요성을 느꼈습니다.
브라우저의 호환성을 무시하고 각 브라우저의 복사 기능 지원을 살펴보세요.
1. IE 브라우저에는 세 가지 해결 방법이 있으며 코드는 다음과 같습니다.
varclip = Components.classes['@ mozilla.org/widget/clipboard;1'].createInstance(Components.interface.nsIClipboard);
jhuckaby가 작성한 Zero Clipboard js 라이브러리는 Flash를 사용하여 콘텐츠를 클립보드에 복사합니다. 브라우저에 Flash 플러그인이 탑재되어 있으면 ActionScript는 JavaScript의 단점을 차단하고 브라우저 간 복사 호환성 문제를 해결합니다.
제로 클립보드의 구현 원리: 제로 클립보드는 먼저 플래시 객체 태그를 생성하여 투명한 플래시가 복사 버튼 위에 떠 있도록 합니다. 실제로 클릭되는 것은 버튼이 아니라 플래시입니다. Flash로 전송된 다음 Flash Copy를 통해 시스템 클립보드로 전달됩니다.
참고: Flash 구현을 기반으로 하기 때문에 보안상의 이유로 Flash를 웹 컨테이너(예: Apache, Tomcat)에서 실행해야 하며 Flash를 직접 열 수는 없습니다. 버튼이 정지된 애니메이션과 유사할 것입니다. 인터넷에서는 Flash 설정을 마우스 오른쪽 버튼으로 클릭하고 ZeroClipboard.swf를 신뢰할 수 있는 위치에 추가하는 것이 작동하는 것 같다고 했지만 여전히 작동하지 않는 문제일 수도 있습니다. 내 로컬 브라우저.
1> 압축된 Zero Clipboard 패키지를 다운로드하고 압축을 풀고 ZeroClipboard.js와 ZeroClipboard.swf라는 두 파일을 프로젝트에 넣습니다.
2> 다음과 같이 Zero Clipboard.js 파일을 소개합니다. 코드: ;
참고: ZeroClipboard.js와 ZeroClipboard.swf는 동일한 경로에 배치되어야 합니다. 동일한 경로에 있지 않은 경우 ZeroClipboard.setMoviePath()를 사용하여 설정할 수 있습니다.
3> 다음과 같이 코드를 복사하세요.
clip.setHandCursor( true ) // 마우스를 손 유형으로 설정
clip.setText("hello,world "); // 복사하도록 설정 텍스트는 텍스트 상자의 값일 수 있습니다.
clip.glue("copy-botton"); // 클립용 버튼을 등록합니다. 매개변수는 버튼 요소의 ID입니다. 복사하려면 버튼을 클릭하세요
4> Zero Clipboard 일반적인 방법, 소스 코드를 직접 보는 것이 좋습니다:
reposition(): 페이지 크기 변경 시 플래시 버튼이 어긋나지 않도록 방지
hide(): 플래시 버튼 숨기기
show (): 플래시 버튼 표시
setCSSEffects(): 잘못된 플래시 쉴드 버튼 스타일 문제를 해결합니다(:hover를 .hover로 변경).
5>제로 클립보드 공통 이벤트, 이벤트 처리 함수는 addEventListener()입니다.
load: 플래시 버튼 로딩 이벤트
mouseOver: 마우스 위로 이동 이벤트
mouseOut: 마우스 밖으로 이동 이벤트
mouseDown : 마우스 다운 이벤트
mouseUp: 마우스 놓기 이벤트
complete: 복사 성공 이벤트
jquery.zclip 라이브러리
ZeroClipboard는 기본 JavaScript 구현을 기반으로 하므로 jquery.zclip은 jQuery를 사용하여 Zero를 구현합니다. 클립보드 캡슐화를 위해 프로젝트에서 이미 jQuery를 사용하고 있다면 사용을 권장하며, jquery.zclip의 크기는 더 작습니다.
jquery.zclip 다운로드 주소: http://www.steamdev.com/zclip/
Zero Clipboard 다운로드 주소: https://github.com/zeroclipboard/ZeroClipboard/releases
샘플 다운로드:
테스트를 용이하게 하기 위해 jquery.zclip과 Zero Clipboard로 작성된 예제를 csdn에 업로드했습니다. 예제는 웹 컨테이너에서 실행되어야 합니다.
데모 다운로드 주소