2012-09-17 40 views
1

好吧,我開發了一個很好的tinymce解決方案,我通過js編程創建並銷燬所有的tinymce-instances - 所以,我知道它可能不是日常用法一個tinymce實現 - 但基本上它就像一個魅力。TinyMCE仍然隱藏(uvw-dialog-open)

現在,在我給你具體示例代碼之前 - 我會解釋我的一個奇怪的問題:我的一個朋友是我製作的在線工具的一個超級用戶,他正在創建/銷燬tinymce-instances的hundrets在白天...

有時,經過數小時的工作,他有這樣的行爲,當他點擊「編輯」按鈕時,tinymce不會顯示出來。我從來沒有做過,只能自己複製 - 但有一天,在一次團隊查看會話中,當錯誤已經發生時,我可以看看他的屏幕和頁面(與螢火蟲)。

所以,很糟糕的是我無法通過javascript代碼進行完整的調試(因爲當您在這種情況下點擊f5一次時,錯誤消失,並且需要其他幾個小時才能重新獲得) - >我意識到,當錯誤發生時 - > tinyMCE-對象本身中的所有東西看起來都不錯 - > DOM渲染中的所有東西似乎也沒問題 - >但是,從一些奇怪的css-import-file中,突然間出現了一個定義像這樣:

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

這是導致該TinyMCE的的主面板將會顯示並沒有什麼TinyMCE的是可見的了..殺害和實例的再創造也不會修復了這一刻,你必須按f5並重新加載後,你甚至可以再次找不到這個css-definition(或者至少我沒有能夠通過teamviewer和他的低劣的小筆記本電腦)

所以,唯一想到的是在我自己的css中的一個醜陋的黑客攻擊,講述這件事:

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

,從那時起......這是很多人會爲周 - >但是今天,我的朋友再次打電話給我,告訴我,他不能看到TinyMCE的再次..我幾乎在淚水中,你可以想象:D

好吧..寫完後,重新閱讀所有這些行 - >我意識到我的修復不會工作......兩者是相同的定義,如果它們出現在相同的級別(文件,而不是inlin e)..可能是最後一場比賽贏了,我想,什麼是最新的懶惰加載tinymce文件..所以它將明確更好,使內聯可見性:可見;通過tinymce的init_instance_callback ...

但是,在我的絕望中,我以爲我會在這裏寫下所有的東西在stackoverflow - >也許有人知道這個問題的真正原因,並且..你們是最令人敬畏的開發者在那裏,我知道:d

回答

2

Jebbie,

思考不是一個明確的答案更多...

聽起來像一個內存泄漏問題,由於大量的JavaScript/DOM活動的長期lifed頁。

你可能沒有做錯事,你不可能追查真正的原因,然而,有些措施是提供給你:

  • 嘗試使你的TinyMCE的情況下,可重複使用的,而這破壞和創造新的每時間。
  • 定期讓頁面請求重新投放 - 在重新投放的頁面中重現整個文檔狀態(DOM和javascript環境)可能是一項挑戰。

很多工作,沒有保證我很無聊。

+0

不錯,非常感謝分享你的想法 - 第一點是一個很好的論點..直到現在我從未想過重新使用我的實例,我想..當它是一個內存泄漏,我想你是對的,這種方法將是避免它的最好方法..第二點,我想我不明白你的實際意思:D - >目前我做了一個討厭的黑客;在init_instance_callback中,我將添加一個內聯的「visibility:visible」,延遲100ms,所以這應該在當時的文件導入中肯定覆蓋「錯誤的」css – jebbie

+0

Jebbie,第二點改寫爲...採取措施減少頁面的使用壽命,例如,每隔(比方說)30次用戶交互或每隔(比如說)15分鐘後第一次交互,安排javascript刷新頁面。本身就很簡單,但是你需要確保在刷新的頁面中重新創建了DOM的當前狀態(顯示什麼和不顯示什麼)以及javascript環境(變量,對象和閉包)。除非有人知道簡單可靠的技術,否則頁面狀態的娛樂可能會相當複雜。 –

相關問題