전단 js 편집 가능 한 div 에 그림 붙 여 넣 기 (다른 탭 도 가능)

3831 단어 전단js
입력 상자 에서 그림 붙 여 넣 기 기능 을 실현 하려 면 input, textarea 등 입력 상 자 를 부모 용기 로 사용 할 수 없습니다. input, textarea 에 서 는 문자열 만 받 아들 일 수 있 기 때문에 html 태그 에 대해 서 는 전의 와 렌 더 링 을 하지 않 습 니 다.
따라서 contenteditable = 'true' 속성 으로 div (다른 용기 도 가능) 를 편집 하여 입력 상 자 를 모 의 하여 입력 상자 에 그림 을 붙 이 는 효 과 를 실현 하고 데 이 터 를 백 엔 드 에 제출 할 때 form 으로 제출 할 수 있 습 니 다.
비동기 로 제출 할 수도 있 습 니 다. form 을 제출 할 때 div 의 데 이 터 를 모두 form 폼 의 숨겨 진 도 메 인 에 넣 으 면 됩 니 다. 비동기 로 제출 하면 div 의 데 이 터 를 data 로 전송 하면 됩 니 다.
js 편집 가능 한 div 에 그림 붙 여 넣 기
붙 여 넣 은 그림 의 출처 는 QQ, 위 챗, 스파이크 등 메 신 저 에서 만 나 올 수 있 는 그림 입 니 다.(예 를 들 어 채 팅 기록 에 있 는 그림, 입력 상자 에 있 는 캡 처, 데스크 톱 에 있 는 그림 을 입력 상자 로 복사 합 니 다)
직접 실행 할 수 있 는 코드:


	
		
		
		<style>
			body,html{
				text-align: center;
			}
			#editDiv{
				width:1000px;
				display: inline-block;
				height: 800px;
				background:#fff;
				border-radius:10px;
				line-height: 20px;
				padding:10px;
				font-size: 14px;
				color:#666;
				resize: none;
				outline: none;
				overflow-y: scroll;
			}
			#editDiv{
				border:1px solid #333;
				border-color:rgba(169,169,169,1);
				text-align: left;
			}
		</style>
	
	
		<div id="editDiv" contenteditable="true">
		</div>
	
	<script src="js/jquery.min.js"/>	
	<script>
	document.querySelector('#editDiv').addEventListener('paste',function(e){
	 var cbd = e.clipboardData;
	    var ua = window.navigator.userAgent;
	    //     Safari    return
	    if ( !(e.clipboardData && e.clipboardData.items) ) {
	        return ;
	    }
	    // Mac   Chrome49       Finder     Bug Hack 
	    if(cbd.items && cbd.items.length === 2 && cbd.items[0].kind === "string" && cbd.items[1].kind === "file" &&
	        cbd.types && cbd.types.length === 2 && cbd.types[0] === "text/plain" && cbd.types[1] === "Files" &&
	        ua.match(/Macintosh/i) && Number(ua.match(/Chrome\/(\d{2})/i)[1]) < 49){
	        return;
	    }
	    for(var i = 0; i < cbd.items.length; i++) {
	        var item = cbd.items[i];
	        if(item.kind == "file"){
	            var blob = item.getAsFile();
	            if (blob.size === 0) {
	                return;
	            }
	            // blob                        
	            /*-----------------------        start-----------------------*/
				/*var data = new FormData();
				data.append('discoverPics', blob);
				$.ajax({
				    url: '/discover/addDiscoverPicjson.htm',
				    type: 'POST',
				    cache: false,
				    data: data,
				    processData: false,
				    contentType: false,
				    success:function(res){
				    	var obj = JSON.parse(res);
				    	var wrap = $('#editDiv');
					    var file = obj.data.toString();
					    var img = document.createElement("img");
				        img.src = file;
						wrap.appendChild(img);
				    },error:function(){
				    	
				    }
				})*/
				/*-----------------------        end-----------------------*/
				/*-----------------------             start-----------------------*/
				var reader = new FileReader();
				var imgs = new Image(); 
				imgs.file = blob;
				reader.onload = (function(aImg) {
			      return function(e) {
			        aImg.src = e.target.result;
			      };
			    })(imgs);
			    reader.readAsDataURL(blob);
			    document.querySelector('#editDiv').appendChild(imgs);
			    /*-----------------------             end-----------------------*/
	        }
	    }
	}, false);
	</script>

</code></pre> 
  <br/> 
  <br/> 
   
 </div> 
</div>
                            </div>
                        </div>

좋은 웹페이지 즐겨찾기