티스토리 뷰
대부분 브라우저에 호환되는 클립보드(clipboard)에 호환되는 텍스트 복사하기
https://jsfiddle.net/jsLfnnvy/12/
<!DOCTYPE html>
<html>
<head>
<title>Clipboard Copy</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<style>
</style>
<script>
/*
소스1.
<input type="text" class="A" value="test@gmail.com" id="A" />
// jquery 이용시 - 여러개 객체 이벤트 걸때
$(".A").each(function(){
var func=function(){ alert("복사되었습니다."); };
clickedCopyText(this,$(this).text(),func);
});
// 한개의 객체 이벤트 걸때
//clickedCopyText(document.querySelector("#A"), "abc1111", function(){ alert("복사 되였습니다."); });
*/
function clickedCopyText($target,text,endFunc){
if(!endFunc) endFunc=function(){};
if($target.addEventListener){ // ie9 이상
$target.addEventListener("click",function(e){
document.execCommand('copy');
},false);
$target.addEventListener("copy", function(e){
e.preventDefault();
if(e.clipboardData){ // jquery 경우 : e.originalEvent.clipboardData
e.clipboardData.setData("text/plain", text);
}else if(window.clipboardData){
window.clipboardData.setData("Text", text);
}
endFunc();
},false);
}else{ // ie8 이하
$target.attachEvent("onclick", function(e){
window.clipboardData.setData("Text", text);
endFunc();
});
}
}
/*
소스2.
jquery 이용시
클릭하는 객체와 복사하는 객체가 같은 객체일때.
<input type="text" class="form-control" value="test@gmail.com" />
clickedCopyTextJq($("input[type='text']"));
*/
function clickedCopyTextJq(target,endFunc){
if(!target) return false;
var $target=$(target);
$target.on({
click:function(e){
document.execCommand("copy");
}
,copy:function(e){console.log(e)
var $this=$(this),text=$this.val()||$this.text();
e.preventDefault();
if(e.originalEvent.clipboardData){
e.originalEvent.clipboardData.setData("text/plain", text);
} else if(window.clipboardData){
window.clipboardData.setData("Text", text);
}
if(endFunc) endFunc.call(this, e);
else alert("copied!!!");
}
});
}
/*
소스3. *** 강추
http://stackoverflow.com/questions/31593297/using-execcommand-javascript-to-copy-hidden-text-to-clipboard
<textarea class="form-control" rows="5" id="textarea">
<span class="label label-default">Default</span>
<span class="label label-primary">Primary</span>
<span class="label label-success">Success</span>
<span class="label label-info">Info</span>
<span class="label label-warning">Warning</span>
<span class="label label-danger">Danger</span>
</textarea>
<button type="button" id="btn-copy" class="btn-copy" data-dest="#textarea" value="xxx">Copy</button>
clickedCopyTextTarget(".btn-copy");
*/
function clickedCopyTextTarget(target, endFunc) {
if(!target) return false;
var success=true
,range=document.createRange()
,selection=null
,$tmpElem=$('<div>');
$("body").on("click", target, function(e){
var $this=$(this)
,dest=$this.attr("data-dest")||""
,$dest=dest?$(dest):$this
,text=$dest.val()||$dest.text();
if(window.clipboardData){ // For IE
window.clipboardData.setData("Text", text);
}else{ // etc
$tmpElem.text(text).css({position:"absolute",left:"-1000px",top:"-1000px"}).appendTo("body");
// Select temp element.
range.selectNodeContents($tmpElem.get(0));
selection=window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try{
success = document.execCommand("copy", false, null);
}catch(e){
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
if(success){
if(!endFunc) alert ("copied!!!");
else endFunc.call(this, e);
}
}
$tmpElem.remove();
$dest.select();
});// end on
}
/*
소스4. 이벤트 없이 복사만 함
copyExe("copy!!!!");
*/
function copyExe(source,endFunc){
if(window.clipboardData){ // ie
window.clipboardData.setData('Text',source);
if(endFunc) endFunc.call(this, e);
else alert("copied!!!");
}else{ // etc
var $tmpDiv=$('<div style="position:absolute;top:-1000px;left:-1000px;">'+source.replace(/</g,"<").replace(/>/g,">")+'</div>').appendTo("body")
,range=document.createRange()
,selection=null;
range.selectNodeContents($tmpDiv.get(0));
selection=window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
if(document.execCommand("copy", false, null)){
if(endFunc) endFunc.call(this, e);
else alert("copied!!!");
}else window.prompt("Copy to clipboard: Ctrl+C, Enter", source);
$tmpDiv.remove();
}
}
$(function(){
clickedCopyTextJq($("input[type='text']"));
clickedCopyTextTarget(".btn-copy", function(){ $(this).text("copied!!!"); });
});
</script>
</head>
<body>
<div class="container-fluid">
<h1>Clipboard Copy <a href="http://nosmoke.tistory.com/2394" target="_blank" class="label label-info">설명</a></h1>
<div class="">
<form>
<div class="form-group">
<label for="exampleInputEmail1">이메일 주소</label>
<input type="text" class="form-control" value="test@gmail.com" />
</div>
<div class="form-group">
<label for="exampleInputPassword1">아이디</label>
<input type="text" class="form-control" value="id-name" />
</div>
</form>
<textarea class="form-control" rows="5" id="textarea">
<span class="label label-default">Default</span>
<span class="label label-primary">Primary</span>
<span class="label label-success">Success</span>
<span class="label label-info">Info</span>
<span class="label label-warning">Warning</span>
<span class="label label-danger">Danger</span>
</textarea>
<div style="margin:1em 0 0;text-align:center;">
<button type="button" id="btn-copy" class="btn btn-primary btn-copy" data-dest="#textarea">Copy</button>
</div>
</div>
</div>
</body>
</html>
'컴터 > Javascript / html' 카테고리의 다른 글
좌우로 슬라이드(vertical slide) (0) | 2014.10.10 |
---|---|
javascript hoisting(호이스팅) 이란 (0) | 2014.08.19 |
[자바스크립트]본문내 실제 이미지 크기가 설정값 이상이면 레이어로 크게 보기 (0) | 2011.02.24 |
a 태그에 이미지 백그라운드로 나오게할때 ie만나오고 firefox등에선 안나올때 (1) | 2009.02.11 |
- Total
- 1,770,491
- Today
- 3
- Yesterday
- 19
- Adobe AIR / www.AS3.kr / Actio…
- Adobe AIR Devpia.
- Beyond Tomorrow
- Blog of Shigeru Nakagaki. Let\…
- CSS3 . Info
- Code Weblog
- CodeIgniter 한국사용자포럼 BETA
- ECONOBLOG
- FlexComponent-플렉스 네이버 카페
- Guru's Blog
- Hooney.net - CSS Reference Sit…
- Korean Healthlog
- Raymond.CC Blog
- [Air]AIR_IN_ACTION
- [CSS]후니넷
- [Flex] css 스킨
- [JavaFx] 한글화
- [basic4ppc]괜찮은 사이트
- [flex2책저자]with okgosu (-..-)a
- [flex] stylesheet
- [flex] 예제 많은곳-EBook관련
- [flex]ungsung' study
- [html5-canvas]『 zeroone 』blog
- [html5-iphone]xguru.net
- [html5]korea html5 group
- [html5]sencha touch demos - fr…
- [iPhone]아이군의 블로그
- [iphone] 토리의 놀이터
- [iphone]LambertPark
- [iphone]safari 레퍼런스
- [iphone]피의복수
- [jQuery Plugin] 포토갤러리
- [jQuery] -- jQuery
- [jQuery] 1.1.2 API Browser
- [jQuery] IBM 사이트 설명
- [jQuery] 예제 많음
- [javascript]JKwang's Programs
- [red5]
- [그래픽js] 끝내줌.ㅋ
- [김프]무료 이미지 관리툴 -비교대상 포토샵
- [무료캡쳐프로그램] jing Project - swf …
- [무료호스팅]1.5Gb 줌
- [서프라이즈] - 대문
- [실버라이트] msdn
- [실버라이트]ONESTONE
- [실버라이트]ZZANGMYON BLOG♡
- [실버라이트]사진속에 혼을 담는 개발자
- [실버라이트]유령회사 공도소프트
- [실버라이트]이과장의 프로그래밍이야기
- [오픈소스검색엔진]루씬 한글분석기 오픈소스 프로젝트
- [해킨토시]x86osx.com
- adobe 예제 사이트
- d-|-b First Of May
- lovesera.com: ART of VIRTUE
- rollin96님의 노트-air/flex Tip
- w3school.com
- 굿네이버스
- 꿀뷰, 바닥, 술집의 개발자
- 나물이네-자취생들의 먹거리 해결..ㅋ
- 낙장불입 인생막장
- 내 눈으로 본 한국, 한국인....
- 딴동네-Air/Flex 영상 강좌
- 레인 에디터
- 류종택의 프로그래밍 강의실
- 리아 코리아
- 무료 호스팅 해줌 - 디지문
- 버터백통의 Action Script 레시피
- 살아 숨 쉬는 웹 - 블루비
- 색깔있는 진보 칼라TV
- 시작하세요! iphone3
- 아이디어 상품
- 아폴로케이션[Adobe AIR]
- 엑셀 도움말
- 영원의 헤아림-검쉰-Flex
- 오픈소스 FLV 플레이어
- 울나라 Ajax Library
- 웹사이트 방문자 통계
- 웹카페-css 잘나왔뜸
- 웹캠으로하는 멋진 게임
- 웹프로그래머의 홈페이지 정보 블로그
- 윤훈남의 액션스크립트3.0
- 조인시 위키
- 체리필터의 인생이야기
- 충청투데이 알짜 뉴스
- 칸과칸사이
- 태우\'s log - web 2.0 and beyond
- 파비콘 제네레이터
- 파인애플 밴드
- 팬소년이야기
- 한국의 대표 진보언론 민중의소리 - 전체 기사
- 훈스닷컴
- Feeding.kr의 일용할양식
- [javascript]기억하고 싶은 것들
- XML-RPC-metaWeblog 설명
- [IT웹툰]미닉스의 작은 이야기들
- outsider 개발자
- 애매한 발음 알아볼때
- [android]Photographer. Android…
- [android]mSurf Lab 안드로이드 개발 정보…
- [android]안드로이드 개발 정보
- [android]안드로이드 개발하는놈
- [android]안드로이드 프로그래밍 정복
- [android]참 쉽습니까?
- [android]커니의 안드로이드 이야기 - Andro…
- [android]회색의 구글 안드로이드 개발
- 장군블로그 [진심을 담는 마크업. 웹 표준. 웹 접근성…
- 백남중
- NARADESIGN:BLOG
- [php.js] php함수 js로 옮겨놓은 곳
- javascript 이론적으로 설명잘해놓은곳
- JavaScript Garden
- Angularjs 등 javascript 설명
- node.js
- 유용한 코드 많은 곳...코드쪼가리?
- HTML5 Demos- 최고!!!
- Firejune - The Web is still ch…
- 글읽어주는 사이트
- [publisher] Clearboth
- [nodejs]Hello World!!
- angularjs2 - 강추
- 모든 브라우저에서 동작하는 canvas
- Beautiful Jquery Plugin MopTip…
- 김진형교수의 SW정책 단상
- Comments for 미스타표, 즐기며 배우며.
- [외국개발자]곰같은블로그
- [opencv]다크 프로그래머
- [YouTube]日本人の知らない日本語
- 영어학습 자료실 EnglishCube - 추천사이트, …
- がんばれ! 日本語
- [youtube]serina hwang
- 하라마~~~
- O HOUSE : 라이프 매거진
- 아름다운 하우스 : 네이버 블로그
- [인테리어]김반장의 이중생활
- [리모델링]Pastel design & Archi te…
- [리모델링]대전 아파트 인테리어 전문 업체! 엘림하우스
- [리모델링]가람홈스토리
- :: Back to the Mac
- Swift 언어 개발문서
- [swift]Seorenn SIGSEGV
- Swift Lab를 위한 댓글
- 콩닥맘의 차니스토리 : 네이버 블로그
- 헬렌의 테이스팅 메뉴 The Tasting Menu
- lovesera: ART of VIRTUE-정진호
- [ionic] saltfactory's blog
- PhoneGap API Documentation
- 김변의 법인등기 : 네이버 블로그
- 면어의 얼렁뚱땅 캘리그라피
- 푸른지성과 카즈미, 그리고 코타의 행복한 세상!
- AnimationKING
- AnimationKING : 네이버 블로그
- POND X P.B.Y
- 도쿄 동경 베쯔니 블로그
- whatdo.net-티티호스팅
- 맥북에어 13
- 봄
- 고려극장
- html5
- 재개발
- 안드로이드
- 대전역
- flex
- Alert.show
- 사마귀
- jQuery
- exif 정보
- localstorage
- 아이폰
- 골목
- ogv
- 넥서스원
- 해킨토시
- html5예제
- 자전거
- 공개
- php
- 가오지구
- 겨울준비
- 티눈
- AIR
- 충청투데이
- Ajax
- 쌍둥이빌딩
- 자양동