반응형
kindeditor 라는 위지윅 웹 에이터 사용시 ie11 에서 ctrl+v 할때 문제가 발생합니다.
kindeditor 가 마지막 update 가 2013년 12월 22일 인대 ie11 에 대한 부분이 완벽하게 반영되지 않은거 같습니다.
ie11 로 ie 가 업데이트된후 javascript 부분에서 자주 문제가 발생하는대 ie11 이 기존 ie 와는 다른 userAgent 값을 가지기 때문입니다.
예전 버전은 msie 가 포함된걸로 구분을 했는대 ie11 은 이 값으로 구분을 할 수 없습니다.
다른 부분도 문제가 있을지 모르겠지만 붙여넣기시 문제가 되어서 해결방법을 찾던중 역시나 이부분이 문제가 되었습니다.
해결방법을 보면
kindeditor.js 파일 5860 line 쯤
K(doc.body).bind('paste', function(e){
if (self.pasteType === 0) {
e.stop();
return;
}
if (pasting) {
return;
}
pasting = true;
K('div.' + cls, doc).remove();
cmd = self.cmd.selection();
bookmark = cmd.range.createBookmark();
div = K('<div class="' + cls + '"></div>', doc).css({
position : 'absolute',
width : '1px',
height : '1px',
overflow : 'hidden',
left : '-1981px',
top : K(bookmark.start).pos().y + 'px',
'white-space' : 'nowrap'
});
K(doc.body).append(div);
if (_IE) {
var rng = cmd.range.get(true);
rng.moveToElementText(div[0]);
rng.select();
rng.execCommand('paste');
e.preventDefault();
} else {
cmd.range.selectNodeContents(div[0]);
cmd.select();
}
setTimeout(function() {
movePastedData();
pasting = false;
}, 0);
});
인것을 다음과 같이 ie11 일때도 ie 로 인식식혀서 해결했다.
if (self.pasteType === 0) {
e.stop();
return;
}
if (pasting) {
return;
}
pasting = true;
K('div.' + cls, doc).remove();
cmd = self.cmd.selection();
bookmark = cmd.range.createBookmark();
div = K('<div class="' + cls + '"></div>', doc).css({
position : 'absolute',
width : '1px',
height : '1px',
overflow : 'hidden',
left : '-1981px',
top : K(bookmark.start).pos().y + 'px',
'white-space' : 'nowrap'
});
K(doc.body).append(div);
if (_IE) {
var rng = cmd.range.get(true);
rng.moveToElementText(div[0]);
rng.select();
rng.execCommand('paste');
e.preventDefault();
} else {
cmd.range.selectNodeContents(div[0]);
cmd.select();
}
setTimeout(function() {
movePastedData();
pasting = false;
}, 0);
});
K(doc.body).bind('paste', function(e){
if (self.pasteType === 0) {
e.stop();
return;
}
if (pasting) {
return;
}
pasting = true;
K('div.' + cls, doc).remove();
cmd = self.cmd.selection();
bookmark = cmd.range.createBookmark();
div = K('<div class="' + cls + '"></div>', doc).css({
position : 'absolute',
width : '1px',
height : '1px',
overflow : 'hidden',
left : '-1981px',
top : K(bookmark.start).pos().y + 'px',
'white-space' : 'nowrap'
});
K(doc.body).append(div);
var isIE11 = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
if ( _IE || isIE11 ) {
var rng = cmd.range.get(true);
rng.moveToElementText(div[0]);
rng.select();
rng.execCommand('paste');
e.preventDefault();
} else {
cmd.range.selectNodeContents(div[0]);
cmd.select();
}
setTimeout(function() {
movePastedData();
pasting = false;
}, 0);
});
if (self.pasteType === 0) {
e.stop();
return;
}
if (pasting) {
return;
}
pasting = true;
K('div.' + cls, doc).remove();
cmd = self.cmd.selection();
bookmark = cmd.range.createBookmark();
div = K('<div class="' + cls + '"></div>', doc).css({
position : 'absolute',
width : '1px',
height : '1px',
overflow : 'hidden',
left : '-1981px',
top : K(bookmark.start).pos().y + 'px',
'white-space' : 'nowrap'
});
K(doc.body).append(div);
var isIE11 = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
if ( _IE || isIE11 ) {
var rng = cmd.range.get(true);
rng.moveToElementText(div[0]);
rng.select();
rng.execCommand('paste');
e.preventDefault();
} else {
cmd.range.selectNodeContents(div[0]);
cmd.select();
}
setTimeout(function() {
movePastedData();
pasting = false;
}, 0);
});
반응형
'Story > Javascript' 카테고리의 다른 글
ie11 사용시 KindEditor 에서 newlineTag 를 br 로 해도 p 태그로 나올때 해결방법 (0) | 2014.12.04 |
---|---|
임의의 좌표에 이벤트를 강제로 주는 방법 트리거 이벤트 (0) | 2014.10.22 |
위지윅 에디터 KindEditor 에서 옵션값 변경 샘플 (0) | 2014.01.14 |
보색 구하기 complementary color , Opposite Color (0) | 2013.01.21 |
youtube javascript 로 동작 제어하기 (0) | 2013.01.11 |