2012-09-17 3 views
1

좋아요. 좋은 tinymce-solution을 만들었습니다. 여기서는 js를 통해 모든 tinymce-instances를 프로그래밍 방식으로 생성하고 파기합니다. 그래서 매일 사용하지 않을 수도 있습니다. tinymce 구현 -하지만 기본적으로 그것은 매력처럼 작동합니다.TinyMCE는 숨겨져 있습니다 (uvw-dialog-open)

이제 특정 예제 코드를 제공하기 전에 - 나는 이상한 문제를 설명 할 것입니다 : 저의 친구는 저의 온라인 툴의 극한의 파워 유저입니다. 그는 저격수 인스턴스의 생성/파괴를하고 있습니다. 낮에는 ...

때로는 업무 시간 이후에 그는 "편집"버튼을 눌렀을 때 주석이 나타나지 않는 경우가 있습니다. 나는 스스로 그것을 재현하기 위해 그것을 만들지 못했지만 어느 날 팀 뷰어 세션에서 오류가 이미 발생했을 때 나는 그의 화면과 페이지 (방화 녀와 함께)를 들여다 볼 수있었습니다.

JavaScript 코드를 통해 전체 디버깅을 할 수 없었습니다 (이 상황에서 f5를 한 번 치면 오류가 사라지고 다시 얻는 데 몇 시간이 걸릴 것이기 때문에) -> 나는 실수가 일어 났을 때 - 작은 MCE 객체 자체의 모든 것이 괜찮아 보인다는 것을 깨달았습니다 - DOM 렌더링의 모든 것도 괜찮아 보입니다 ->하지만 이상한 CSS 가져 오기 파일에서 갑자기 정의가 생겼습니다. 이 .. 당신이 죽이고 인스턴스의 재창조이 순간에 버그가 해결되지 않습니다 TinyMCE에의 메인 패널이 표시되지 않습니다 및 TinyMCE에 아무것도 더 이상 볼 수 없음을 일으키는

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed { 
    visibility: hidden; 
} 

이 같은 f5 키를 눌러야하고 다시로드 한 후에는 이 CSS 정의를 다시 찾을 수 없습니다. (또는 최소한 팀원과 그의 엿 같은 소형 노트북을 능가하지 못했습니다.)

내 마음에 들었던 유일한 것은 내 자신의 CSS에서 터무니없는 해킹이었습니다. 이 이야기 : 그 이후 ... 그것은 아주 주간이었다

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed { 
    visibility: visible !important; 
} 

을 그리고 것은 -> 그러나 오늘, 내 친구가 나에게 말하고, 나를 다시 호출 그는 TinyMCE에 볼 수없는, 다시 ... 나는 거의이었다 눈물에, 당신은 상상할 수 있습니다 : D

Ok ..이 모든 라인을 쓰고 다시 읽은 후에 -> 나는 나의 수정이 작동하지 않는다는 것을 깨달았습니다 ... 둘 다 같은 정의이고 같은 레벨 (파일, inlin이 아님) e) 아마 last-match-wins 일 것입니다. 새로이 게으른로드 된 tinymce 파일이 될 것입니다. 그래서 인라인 가시성을 확보하는 것이 더 낫습니다. tinymce의 init_instance_callback을 통해 ...

그러나, 필사적으로, 나는 여기에 stackoverflow에 모든 것을 쓸 것이라고 생각했다 -> 아마 누군가가이 문제의 진짜 원인을 안다. .. 너희들은 가장 훌륭한 devs이다. 거기에 내가 알고 : D

답변

2

Jebbie,

생각 확실한 대답보다 더 ...

는 메모리 누수 문제처럼 소리 때문에 긴 lifed 페이지에 자바 스크립트/DOM 활동을 많이합니다.

당신은 아마 아무것도 잘못 한 당신은 그러나 특정 조치가 당신에게 사용할 수있는 실제 원인을 추적 할 가능성이있어 :

  • 는 TinyMCE에 인스턴스를 만드는 재사용 오히려 그 파괴하고 모든 새를 만들어보십시오 시각.
  • 주기적으로 페이지 요청을 다시 요청하십시오. 다시 제공되는 페이지에서 전체 문서 상태 (DOM 및 자바 스크립트 환경)를 재현하는 것이 어려울 수 있습니다.

많은 작업과 무보증입니다.

+0

멋진 의견을 보내 주셔서 감사합니다. 첫 번째 요점은 훌륭한 논쟁입니다. 지금까지는 내 인스턴스를 다시 사용하지 않겠다고 생각 했었습니다. 저는 그것이 mem-leak 일 때 생각합니다. 당신이 바로 그 시점에,이 접근법은 그것을 피하기 위해 최선의 방법이 될 것입니다 .. 두 번째 요점, 나는 당신이 실제로 무슨 뜻인지 이해가 안되는 것 같아요 : D -> 현재 나는 더러운 해킹했다; init_instance_callback에서 인라인 "visibility : visible"을 100ms의 지연으로 추가 할 것입니다. 그래서이 순간에 파일 가져 오기에서 "잘못된"CSS를 확실히 오버라이드해야합니다. – jebbie

+0

Jebbie, 두 번째 요점은 ... 페이지 수명을 줄이기위한 조치를 취하십시오. 예를 들어 30 건의 사용자 상호 작용 또는 매 15 분마다의 첫 번째 상호 작용에서 자바 스크립트가 페이지를 새로 고침 할 수 있도록 조치하십시오. 그 자체로는 간단하지만 DOM의 현재 상태 (표시되는 것과 표시되지 않는 것)와 자바 스크립트 환경 (변수, 객체 및 클로저)이 새로 고쳐진 페이지에서 다시 만들어 지도록해야합니다. 누군가가 간단하고 신뢰할 수있는 기술을 안다면 페이지 상태의 재생은 상당히 복잡 할 수 있습니다. –

관련 문제