Internet Explorer 11에서 Spac Editor 미작동

Spac Editor를 사용 중인 지인분께서 IE 11에서만 이상하게 에디터에 삽입 버튼을 클릭해도 본문에 이미지 첨부가 안 된다고 한다.

반면에 파폭이나 크롬에선 잘 된다.

안 되면 가장 먼저 개발자 홈페이지로 가 보는 게 상책이다.

공지사항에 이렇게 되어 있다.

제일 좋은 방법은 개발자분께서 말씀하신 대로 Web Note라고 하는 걸로 갈아타면 된다.

근데 이걸 말씀하신 분이 이미지 첨부가 안 되는데도 불구하고 계속 쓰겠다고 한다.

결국 이미지 첨부만이라도 되게 하자 싶어서 수정했다.


우선은 spac_editor.js 파일을 열어서 에디터에 삽입 버튼에 걸린 함수를 보면 inputImagelink()라고 하는 애다.

저 함수를 보다가 보면 makeHTML(html)라고 하는 애가 밑에서 버티고 있다.

이번엔 makeHTML() 얘를 보자.


function makeHTML(html) {
	editor.focus();
	if (isIE()) {
		if(!SelectRange || SelectRange == null || SelectRange == "") SelectRange = editor.document.selection.createRange();
		SelectRange.select();
		SelectRange.pasteHTML(html);
	} else {
		editor.document.execCommand('inserthtml', null, html);
	}
	SelectRange = null;
}

isIE()라고 하는 애가 보인다.

IE에서만 안 되고 다른 데에선 되니까 저게 문젠 거 같다.


얘는 spac_editor_common.js 파일에 있다.

function isIE() {
	var returnVal = false;
	var IE_VER_ARR = Array("MSIE 6","MSIE 7","MSIE 8","MSIE 9","MSIE 10");
	for(var i = 0; i < IE_VER_ARR.length; i++) {
		if( navigator.appVersion.indexOf(IE_VER_ARR[i]) > -1) {
			returnVal = true;
			break;
		}
	}
	return returnVal;
}

저기 보인다.

IE_VER_ARR 여기에서 IE 버전을 확인해서 맞으면 returnVal에 true를 줘서 보내 준다.

제일 뒤에다가 "MSIE 11"이라고 추가해 주면 좋겠지만 navigator.appVersion을 찍어 보면 IE 11의 경우 안 나온다.

그래서 rv:11.0 얘를 추가해 주자.


var IE_VER_ARR = Array("MSIE 6","MSIE 7","MSIE 8","MSIE 9","MSIE 10", "rv:11.0");


대충 이렇게 되겠다.

이제 된 거 같지만 이렇게 할 경우 IE 11로 걸러지긴 하는데 Dom Inspector에서 지랄지랄을 한다.

spac_editor.js 파일에 editor.document.selection.createRange(); 이게 문제라고 어쩌고 저쩌고...

IE 11의 경우 더 이상 document.selection.createRange(); 이걸 지원하지 않는다고 한다.

그래서 document.body.createTextRange(); 이걸로 대체하면 된다.


길어졌지만 결론은...

editor.document.selection.createRange(); -> editor.document.body.createTextRange();


덧1. 참고로 이건 에디터 본문에 이미지 첨부하기 위한 땜빵일 뿐, 궁극적인 해결책이라고 보긴 어려우니 백업은 반드시 하고 하세요.

덧2. Spac Editor 만드신 개발자분께는 허락도 받지 않고 수정하였습니다. 문제가 될 경우 삭제하겠으며 부디 양해 부탁 드리겠습니다.

이 글을 공유하기

댓글(0)

Designed by JB FACTORY