div contenteditable에서 이미지 첨부시 포커스 옮기는 방법

div contenteditable에서 이미지 첨부시 포커스 옮기는 방법

작성일 2023.07.26댓글 2건
    게시물 수정 , 삭제는 로그인 필요

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="write.css">
  <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
  <script defer src="test.js"></script>
  <title>Document</title>
</head>

<body>
  <div id="edit" contenteditable="true"></div>
  <input type="file" class="img-upload">
</body>

</html>

const edit = document.querySelector("#edit");
const pTage = document.createElement("p");
pTage.innerHTML = "<br>";

edit.appendChild(pTage);
edit.addEventListener("keydown", () => {
  let nodes = edit.firstChild;
  if (nodes === null || nodes.nodeName !== "P") {
    const edit = document.querySelector("#edit");
    const pTage = document.createElement("p");
    pTage.innerHTML = "<br>";
    edit.appendChild(pTage);
  }
});

let a = document.querySelector(".img-upload");
a.addEventListener("change", (e) => {
  let reader = new FileReader();
  reader.onload = (e) => {
    const imgWrap = document.createElement("span");
    const img = document.createElement("img");
    img.setAttribute("src", e.target.result);
    imgWrap.appendChild(img);

    const dd = document.querySelector("#edit").appendChild(imgWrap);
  };
  reader.readAsDataURL(e.target.files[0]);
});


여기서 ㅠㅠ 이미지를 업로드 하면 p태그가 생성이 안되고, 이미지를 감싸고 있는 span으로 다시 글이 써지는데..
이걸 막기 위해서 이미지를 올리면 focus를 다음 줄로 옮기거나 해야되는거 같은데 정말.. 방법을 모르겠습니다.
혹시 아신다면 ㅠㅠ 도움좀 주십쇼 ㅠㅠ



profile_image 익명 작성일 -

contenteditable 속성을 가진 div 요소에 이미지를 첨부할 때 포커스를 옮기는 방법은 JavaScript를 사용하여 해결할 수 있습니다. 다음은 예시 코드입니다.

```html

<div id='editableDiv' contenteditable='true'></div>

<script>

const editableDiv = document.getElementById('editableDiv');

editableDiv.addEventListener('paste', function(e) {

e.preventDefault();

const clipboardData = e.clipboardData || window.clipboardData;

const items = clipboardData.items;

for (let i = 0; i < items.length; i++) {

if (items[i].type.indexOf('image') !== -1) {

const file = items[i].getAsFile();

const reader = new FileReader();

reader.onload = function(event) {

const img = document.createElement('img');

img.src = event.target.result;

// 이미지를 div에 추가

editableDiv.appendChild(img);

// 포커스를 div로 옮기기

editableDiv.focus();

};

reader.readAsDataURL(file);

}

}

});

</script>

```

위의 코드는 contenteditable 속성을 가진 div 요소에 이미지를 붙여넣을 때 발생하는 paste 이벤트를 감지하여 이미지를 div에 추가하고, 추가된 이미지가 있는 div로 포커스를 옮기는 기능을 구현한 것입니다. 이 코드를 사용하면 이미지를 첨부할 때 포커스가 div로 자동으로 옮겨집니다.

여기까지가 제가 준비한 답변입니다^^

답변확정 꼭 부탁드려요~!

profile_image 익명 작성일 -

contenteditable 속성을 가진 div에서 이미지를 첨부하고 포커스를 옮기는 방법은 JavaScript를 사용하여 해결할 수 있습니다.

먼저, 이미지를 첨부하는 버튼을 만들고 해당 버튼을 클릭했을 때 이미지를 선택할 수 있는 파일 선택 창을 열도록 합니다. 그리고 선택한 이미지를 div에 삽입하고 포커스를 옮기는 코드를 작성합니다.

아래는 예시 코드입니다:

```html

<div contenteditable='true' id='editableDiv'></div>

<button _onclick='attachImage()'>이미지 첨부</button>

<script>

function attachImage() {

// 파일 선택 창 열기

var input = document.createElement('input');

input.type = 'file';

input.accept = 'image/*';

input.onchange = function(event) {

var file = event.target.files[0];

var reader = new FileReader();

reader.onload = function(e) {

// 이미지를 div에 삽입

var img = document.createElement('img');

img.src = e.target.result;

document.getElementById('editableDiv').appendChild(img);

// 포커스를 옮기기 위해 div를 클릭

document.getElementById('editableDiv').click();

};

reader.readAsDataURL(file);

};

input.click();

}

</script>

```

위 코드에서는 contenteditable 속성을 가진 div를 id로 'editableDiv'로 지정하였습니다. 이미지를 첨부하는 버튼을 클릭하면 attachImage() 함수가 실행되고, 파일 선택 창이 열립니다. 선택한 이미지는 FileReader를 사용하여 읽은 후, div에 img 요소로 삽입됩니다. 마지막으로, div를 클릭하여 포커스를 옮깁니다.

열심히 답변드렸습니다!

답변확정해주시면 정말 큰 도움이 될것 같습니다.

좋은하루보내시구요!!

게시판 이미지 첨부

게시판에 이미지 첨부기능을 만들었는데 다음과 같이 나옵니다. 본문 내용에... "; } ?> 사진첨부하기 ====================== 가장 간단한 방법입니다. 대충 이런...

총신대 신학대학원 또는 연세대학교...

... 전형방법 : 서류심사 및 면접심사 4. 지원자격 가.... 제출서류(서류 원본을 이미지 파일(JPG, GIF 또는 PNG 형식)로 스캔하여 온라인 원서접수 첨부) 가. 사진...

싸이월드 이미지첨부하려고 하면...

... 이미지 첨부를 누르면 엑박이 떠서 올릴수가 없네요 플래쉬도 마찬가지구요..ㅠ 이걸 해결할 다른 방법은... 0사용 -(사용자서식) □포커스/선택이 변경될 때마다...

wmv파일 재생이 안되요(이미지첨부)

... 되게하는 방법을 가르쳐주세요~~ 검색해보니 시스템복원을... 0사용 -(사용자서식) □포커스/선택이 변경될 때마다 시스템캐럿을 이동 □항상 이미지 크기에 맞게...

hp435 디카 사진옮기는것좀...

... (1) 435에서 컴퓨터로 옮기는 방법은 두가지가 있는데 하나는 기본 설정으로... [게시판선택] [제목] [이미지].......[첨부] 라는 게 있는 창이 뜹니다. 여기서 이미지 옆에...