FF9와 IE에서 확인되는 현상입니다. 코드상 문제가 있었던 것은 아닙니다.
버그라고 할 수도 있고.. 문법이 어긋난 것은 아니니 버그가 아니라고 할 수도 있는데. 재현 과정은 이렇습니다.
- ./index.php?module=admin&act=dispEditorAdminIndex 에서 에디터 옵션 항목을 기본값 그대로 '저장' 클릭.
- xpresseditor가 적용된 게시판에서 새글 작성. 브라우저는 IE 또는 FF9이상을 이용.
- 첨부파일을 첨부하고, 본문삽입 클릭
- 첨부파일이 본문에 중복되어 삽입됨.
이는 pasteHTML 이라는 함수가 중복해서 실행되면서 일어나는 현상이라는 것을 발견했으나.. 코드를 눈 씻고 찾아봐도 그럴만한 구석이 없었습니다.
그래서 재현과정에 뭔가 달라지는 것이 있는가 찾아보니, 에디터 옵션을 설정하지 않았을 때는 기본 폰트 크기가 지정되지 않지만, 설정하면, 기본 폰트 크기가 지정된다는 것이었습니다.
폰
트 크기 지정하는 소스에 문제가 있는가 싶어 보았더니.. xpresseditor.js (또는 xpresseditor.min.js)
파일안에 해당 내용이 있었습니다. 그렇지만.. doc.body.style.fontSize = content_font_size;
라고 되어있는 부분에 아무 하자가 없었습니다..
그래도 의심이 가서 해당 부분을 주석처리하고 실행해본 결과...
버그가 사라졌습니다.ㅠ
이 부분을 실행하는데 있어서 브라우저 버그인지 뭔지 모르지만.. 문제가 생기는 것 같았습니다. 그래서 이 부분을 수정하였습니다.
if(content_font && !doc.body.style.fontFamily) {
doc.body.style.fontFamily = content_font;
}
if(content_font_size && !doc.body.style.fontSize) {
doc.body.style.fontSize = content_font_size;
}
라고 되어있는 부분을
if(content_font && !jQuery(doc.body).hasClass("xe_editor_fontfamily")) {
jQuery(doc.getElementsByTagName("head")).append('<style type="text/css"> .xe_editor_fontfamily{font-family:'+content_font+';}</style>');
jQuery(doc.body).addClass("xe_editor_fontfamily");
}
if(content_font_size && !jQuery(doc.body).hasClass("xe_editor_fontsize")) {
jQuery(doc.getElementsByTagName("head")).append('<style type="text/css"> .xe_editor_fontsize{font-size:'+content_font_size+';}</style>');
jQuery(doc.body).addClass("xe_editor_fontsize");
}
로 변경후 저장하였습니다.. 그랬더니 잘 되네요.. 소스 보시면 아시겠지만.. 같은 내용, 다른 표현인데.. 아래 내용이 훨씬 더 지저분한 표현인데.. 아래 식은 문제 없이 잘 돌아갔습니다.
기본 에디터 사용시 첨부파일 중복으로 본문에 적용되는 문제 해결방법입니다.
출처 : http://www.xpressengine.com/tip/20480457
※ 로그인 하시면 원본파일을 볼 수 있습니다. ※
코멘트 0