2011-12-13 70 views
1

我使用的是Grails 1.3.7,我通過richui使用tinyMCE。我試圖顯示一個模式窗口,使用戶可以發送郵件。但是,如果tinyMCE的顯示正確,我不能使用,因爲這個錯誤的文本編輯器:使用tinyMCE進入模式窗口

t.win.document是空

我終於找到了原因就在這裏,在最後的文章: http://blog.mirthlab.com/2008/11/13/dynamically-adding-and-removing-tinymce-instances-to-a-page/ 看來,當我用構建模式窗口的jquery腳本調用頁面,DOM不刷新,並不會創建相應的textarea。

無論如何,我不知道如何解決這個問題,所以這裏是我的代碼:

jQuery代碼:

function dialogSendFirstMail(id) { 
var monurl = "/myApp/emailTemplate/writeFirstMail.gsp?id_for_mail="+id; 
var titre = "Premier email" 
//alert(monurl); 
$("#dialogSendFirstMail").load(monurl, function() { 
    $(this).dialog({ 
     height: 'auto', 
     width:'auto', 
     modal: true, 
     position: 'center', 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     title:titre 
    }); 
}); 
} 

GSP要求的模態窗口的腳本:

<!-- ... --> 
<g:if test="${params.sendFirstMail}" > 
    <div id="dialogSendFirstMail"></div> 
    <script>dialogSendFirstMail(${idProfil});</script> 
</g:if> 
</body> 

模態窗口(此時此刻僅此):

​​

總之,如果我檢測到我必須發送第一封郵件,該頁面將創建一個放置tinyMCE的div。這是用戶將看到的內容。

回答

0

正如您所提到的,您錯誤「t.win.document爲空」的原因是因爲DOM未刷新。所以當你加載模態對話框時,你將不得不明確地添加tinyMCE控件。

jQuery(document).ready(function() { 
    //your tinyMCE settings here 
    tinyMCE.settings = { 
     mode : "textareas", 
     theme : "simple", 
     editor_selector : "mcesimple", 
     width: 400 

    }; 

    tinyMCE.execCommand("mceAddControl", false, "yourTextareaId"); 
    }); 

一旦對話框關閉,您可以從文本區域中刪除TinyMCE的控制使用此:

您可以使用這樣的事情在這使得richUI編輯器(writeFirstMail.gsp你的情況)普惠制
tinyMCE.execCommand("mceRemoveControl", false, "yourTextareaId");