에디터 안의 글내용 바꾸기 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

에디터 안의 글내용 바꾸기 정보

에디터 안의 글내용 바꾸기

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=87124&sca=&sfl=wr_subject&stx=%BF%A1%B5%F0%C5%CD&spt=-26654&page=2
=================================================================
<input type=checkbox value='잘부탁드립니다.' onclick="if(this.checked==true) editor.document.body.innerText = this.value; else editor.document.body.innerText = ''">문자넣기

html 형식으로 값을 넣으려면 ...

editor.document.body.innerText 대신 editor.document.body.innerHTML을 사용하시면...

넣을 값에 태그 사용도 가능합니다.
===================================================================



팁은 이제는 적용이 안되더군요 ㅠ.ㅠ

2일 밤을 꼬박 샜습니다....별짓 다 해 봤습니다. 온갖 객체를 붙여 넣어도 봤고..

모든 ilb 파일과 cheditor4 폴더안의 js파일도 모조리 보고, 해결못했습니다..ㅠ.ㅠ

제발..

모든 포인트 다 겁니다..

화면이 열린 다음 (dhtml 에디터가 로드된 다음) 입력값을 바꾸는 방법이 없을까요.................

제발 부탁드립니다. ㅠ.ㅠ

에디터 이외는 모두 적용 됩니다. 그누보드의 cheditor 4 버젼에서 입력된 내용을 바꾸는 것은
윈도우 onload 할때나 수정할때 말고는 절대로 불가능 할까요?? 

고수님들 제발 부탁드릴께요 ㅠ.ㅠ

댓글 전체

안녕하세요.

만약, cheditor를 사용중이시고 cheditor.js 파일에 아래 함수가 없다면 추가합니다.

appendContents : function (contents) {
    this.editArea.focus();
    var div = this.doc.createElement('div');
    div.innerHTML = '' + this.trimSpace(contents);

    while (div.hasChildNodes())
        this.doc.body.appendChild(div.firstChild);

    this.editArea.focus();
},

insertContents : function (contents) {
    this.editArea.focus();
    this.setSelection();
    this.doCmdPaste(''+this.trimSpace(contents));
},

replaceContents : function (contents) {
    this.editArea.focus();
    this.doc.body.innerHTML = '';
    this.loadContents(contents);
    this.editArea.focus();
},

설명:
appendContents() - 현재 에디터에 입력되어 있는 내용의 끝에 contents를 추가합니다.
insertContents() - 현재 에디터 내의 커서가 위치한 곳에 contents를 추가합니다.
replaceContents() - 현재 에디터의 내용을 contents로 대체합니다.

예:
<input type="checkbox" value='잘부탁드립니다.' onclick="if (this.checked==true) editor.replaceContents(this.value) else editor.replaceContents('');">문자넣기
정말 감사합니다!! 한줄기 빛처럼 다가왔습니다!!!!
하지만 ,해보았는데 개체가 없다고 나옵니다.ㅠ.ㅠ
먼저 시도해 보고,
글 내용이 ed_wr_content 이라,
ed_wr_content.replaceContents(this.value) 로 해보았는데 도 개체가 없다고 나오네요 ㅠ.ㅠ
editor는 cheditor의 개체입니다.
개체가 없다고 나온다면 editor가 new CHEditor로 생성되었는 지 확인할 필요가 있어 보입니다.
맞다면 추가하신 함수들이 cheditor 프로토타입에 포함되어 있는 지도 확인하십시오.
일단,
editor 는 정의되지 않았습니다. 라고 나옵니다.


ed_wr_content. 로하면 this.body.doc 은 개체가 아닙니다. 라고 나옵니다.

바로 찾아보고 다시 알려드릴꼐요

소스보기로 보면,

var ed_wr_content = new cheditor('ed_wr_content');
    ed_wr_content.config.editorHeight = '250';
    ed_wr_content.config.editorWidth = '100%';
    ed_wr_content.config.imgReSize = false;
    ed_wr_content.config.fullHTMLSource = false;
    ed_wr_content.config.editorPath = '../cheditor4';
    ed_wr_content.inputForm = 'tx_wr_content';

로 처음에 정의 합니다.

제가 위의 답변을 천천히 읽어보니
다음과 같은
"에디터 내의 커서가 위치한 곳에 " 말이 있어 함수를 보니,
this.editArea.focus();  라는 함수가 들어있던데
일단, 체크 함과 동시에 커서는 edtior 내에 위치 합니다.

그다음에 에러가 뜹니다.
그래서 프로토 타입에 찾아가서 그부분을 주석처리 하니
그 다음에서 또 에러가 뜹니다;;

그래서 그부분(loadContent)도 주석처리 했더니
일단, 에러는 안뜹니다;;
this.editArea.focus();  는 잘되는 것 같습니다


혹시나 해서 replace 함수의 두번째 문장을

this.editArea.body 로 하니

메시지: 'this.editArea.body'은(는) null 이거나 개체가 아닙니다.
줄: 218
문자: 5
코드: 0
URI: /cheditor4/cheditor.js

가 뜹니다.

또 혹시나 해서
'this.editArea.innerHTML 하니

메시지: 개체가 이 속성 또는 메서드를 지원하지 않습니다.
줄: 219
문자: 5
코드: 0
URI: cheditor4/cheditor.js

그런데, 'this.editArea.innerHTML은 218번쨰 줄입니다.
그러나, 다른 소스를 살펴보니
this.editArea.document.body.innerHTML 로 쓰고 있어서
그렇게 고쳤습니다.

그러나
똑같은 오류가 납니다(loadContents 가 문제)

일단,  다른곳을 찾아 보았는데,

loadContents 는 함수는 없고, 변수값만 있습니다.

따라서, resetEditArea 함수도 써보고
this.editArea.document.body.innerHTML = contents;
도 해보고
this.editArea.document.write(contents);
도 해봤는데

소용이 없습니다...
ㅠ.ㅠ
아.. 3일밤을 새우는..아 낮이구나...
근데.... 궁금한것이... 왜 함수들이 빠졌을까요? 이전 버젼이라서 그런가..
그런데 왜 이전버젼에서 먹히는 것도 안될까요?
불당님 홈페이지에서의 코드도 안먹히더라구요.. 2007년 버젼..

불당팩꺼 받아서... loadcontents 함수를 받아볼까요...
감사합니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 슈퍼코브라님!!!!!

진정한 슈퍼코브라십니다!

editArea.document.body.innerHTML  앞에 this를 안넣거나
고정관념에;;; 4개로 조합만 했었네요;; 아니군요 넣었던적도 있었는데
focus 가 엄청 중요했었네요
어쨋든 정말 너무 감사드립니다.

다시한번 감사합니다
돈벌면 슈퍼코브라 송이라도 지어받칠께요
이제 잘 수 있겠군요...72시간넘었어요~ 감사합니다. 생명의 은인!!!
그러니까.. 종합 정리 입니다.
1. cheditor4 / cheditor.js  파일 에 prototype 안에
다음 함수를 넣는다

replaceContents : function (contents) {
    this.editArea.focus();
    this.editArea.document.body.innerHTML = contents;
},

2.일반적인  그누보드4 최신 버젼 이라면,

<input type="checkbox" value='잘부탁드립니다.' onclick="if (this.checked==true) ed_wr_content.replaceContents(this.value) else ed_wr_content.replaceContents('');">

또는

<input type="checkbox" value='1' onclick="cont_xxx()" name="wr_content"><?=$content$?>
 
하고 cont_xxx() 자바스크립트 함수를 만들어 조건을 넣어 체크 한방에 한꺼번에 필드를 다 채울 수 있다.

특히 안되었던 DHTML 에디터의 글내용까지




이상입니다 ㅎㅎ
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT