2013-08-14 5 views
2

"overflow : scroll"을 사용하여 div 안에 div에 CKEditor를 추가하면 상위 div를 스크롤 할 때 툴바가 이동하지 않습니다. 상위에있는 CKEditor "overflow : scroll"이 툴바가 초기 위치에서 고정되도록 함

<div id="wrapper" style="overflow: scroll;"> 
    <div contenteditable="true">This is the ckedito</div>  
</div> 

는 여기에서 찾을 수 있습니다 : http://jsfiddle.net/W8Dt4/

사람이 문제를 해결 해결 방법을 알고 있나요?

내가 원하는 행동이있을 거라고 생각 : 충분한 공간이있을 때

  • 편집기 div의 상단에있는 도구 모음을 유지합니다.
  • 상단에 충분한 공간이없고 하단에 충분한 공간이있을 때 툴바를 편집기 div의 맨 아래로 이동하십시오.
+0

이 점에 대한 진전 사항은 무엇입니까? 당신은 해결책을 찾았습니까? – rryter

+0

결국 floatingspace 플러그인을 사용하고 사용자 정의 javscript를 사용하여 스크롤 위치에 따라 요소의 위치 (고정 또는 절대)를 설정했습니다. – Tieme

답변

1

넵. CKEditor는 그러한 사례를 결코 고려하지 않았으며, 편집자는 절대로 그러한 절박한 사건을 다루지 않을 것입니다.

그래도 필요한 것은 editor.element.getParent()의 스크롤 리스너입니다. those linesfloatingspace 플러그인입니다. 안타깝게도 ticket #9816이 해결 될 때까지 기다려야합니다. 도구 모음을 다시 배치하는 방식이 바뀌고 문제를 해결할 수 있기 때문입니다. 수정이 (4.2.1)를 출시되면, 당신은 기본적으로 다음과 같이하는 줄을 변경할 수 있어요 : 당신이 원하는 경우

var elementParent = editor.element.getParent(); 

editor.on('focus', function(evt) { 
    ... 
    elementParent.on('scroll', uiBuffer.input); 
}); 

editor.on('blur', function() { 
    ... 
    elementParent.removeListener('scroll', uiBuffer.input); 
}); 

editor.on('destroy', function() { 
    ... 
    elementParent.removeListener('scroll', uiBuffer.input); 
}); 

, 당신이이 ticket branch와 시도를 제공 할 수 있습니다. 그렇지 않으면 곧 출시 될 코드가 패치 될 때까지 기다려야합니다.

알아 둘 사항 : 각 부동 도구 모음은 <body>에 추가되므로 편집기를 둘러싼 동일한 (넘치는) 컨테이너에 속하지 않습니다. 툴바가 컨테이너와 함께 스크롤 할지라도, 위에 항상 이 뜨고, this line을 해킹하지 않는 한 그것에 대해 할 수있는 일은 많지 않습니다. 나는 그것을 테스트하지 않았다.

도움이 되었기를 바랍니다.

+0

응답 해 주셔서 감사합니다. 솔루션을 시도했지만 성공하지 못했습니다. 에디터는 다음과 같은 에러를 던집니다. "Uncaught TypeError : Object # 에는 'eventsBuffer'메서드가 없습니다."이 커밋과 관련이 있습니다. https://github.com/cksource/ckeditor-dev/commit/22159642684478098561043f475b3f5e9eec6ad9 – Tieme

+0

예. 이것은 완전히 새로운 것입니다. – oleq

5

버전 4.4.3을 사용하여 CKEditor의 다른 영역에서 수행되는 것과 비슷한 방식으로 창 스크롤 이벤트를 발생시켜이 문제를 해결할 수있었습니다. 오버플로가있는 상위 컨테이너에 스크롤 이벤트를 첨부합니다. scroll;을 설정하고 창 스크롤을 트리거합니다. 포지셔닝은 다소 어색하지만 여전히 작동합니다.

$("#parent-with-scroll").on('scroll', function (evt) { 
    CKEDITOR.document.getWindow().fire('scroll'); 
}); 
+0

아래의 큰 코드 블록보다 나은이 문제를 해결했습니다. 다른 div 안에 스크롤 가능한 div를 사용합니다. –

관련 문제