2011-08-03 66 views
1

我在我的應用程序中使用tinymce來顯示tinymce編輯器代替textarea。在JSP中,我有兩個選項卡,都包含tinymce文本編輯器。在選項卡1我有下面的代碼片段tinymce編輯器導航時通過製表符的問題

<form:textarea path="msgToIS" class="mceEditor" rows="4" cols="175"/> 
... 
... 
<script type="text/javascript" > 
tinyMCE.init({ 
      mode : "textareas", 
      theme : "advanced", 
      plugins : "pagebreak,style,layer,table,save,advhr,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", 
      editor_selector :"mceEditor", 
      skin : "o2k7", 
      skin_variant : "silver" 
     }); 
</script> 

選項卡2我還有一個文本區域,如下

<form:textarea path="comment" class="mceEditor" rows="4" cols="175"/> 
... 
... 
<script type="text/javascript" > 
    tinyMCE.init({ 
       mode : "textareas", 
       theme : "advanced", 
       plugins : "pagebreak,style,layer,table,save,advhr,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", 
       editor_selector :"mceEditor", 
       skin : "o2k7", 
       skin_variant : "silver" 
      }); 
    </script> 

問題 - 當我按照下面的步驟我收到錯誤「錯誤:j是空 源文件:http://localhost/portal/javascript/tinymce/jscripts/tiny_mce/tiny_mce.js 行:1「在錯誤控制檯中。我只能在Firefox中看到這個錯誤。

步驟1 - 點擊選項卡1

步驟2 - 點擊選項卡2

步驟3 - 點擊選項卡1

步驟4 - 輸入在編輯器中的一些評論。

第5步 - 提交頁面。在提交時,當我嘗試訪問編輯器值使用「tinyMCE.get('msgToIS')。getContent()」我得到以上錯誤。

但是,當我只是點擊標籤1而沒有訪問標籤2並提交頁面我不會得到任何錯誤,事實上我得到正確的編輯器內容。

相同的腳本在IE6,Safari,但不在Firefox 3.6中工作正常。

任何幫助表示讚賞。提前致謝!!

回答

0

也許它與兩個textarea都有class =「mceEditor」並且在每種情況下都使用TinyMCE.init和editor_selector:「mceEditor」有關。也許給每個textarea一個不同的類「mceEditor1」和「mceEditor2」,並相應地設置每個init調用的參數:editor_selector:「mceEditor1」和editor_selector:「mceEditor2」...

+0

@加布裏埃爾:我有同樣的問題...我想你的步驟,它不work..basically當我們點擊了,然後標籤1 TAB2然後再次TAB1 ..它創建TinyMCE的編輯器:○當數組嘗試使用下面的代碼「tinyMCE.get('msgToIS')。getContent()獲得值」它給出了一些j是空的錯誤消息在Firefox錯誤控制檯.. – Raje

1

如果您要做任何動態(如通過javascript在「標籤」之間切換)和TinyMCE,您必須手動添加和刪除編輯器,否則您會得到奇怪的結果。我更詳細地覆蓋這個我blog post(這我假設評論,並要求我幫您完成此之前,你實際上並沒有讀),但它的要點是:

  1. 使用「none」模式,以便TinyMCE不會自動啓動並接管文本區域。使用「textareas」模式將會導致任何隱藏的文本區域出現問題,因爲它們不會被正確初始化。 (例如,一個在片2最初是隱藏)

  2. 每當一個選項卡被示出(如在頁面加載說或切換標籤時),手動初始化上的文本區域中的TinyMCE的編輯器像這樣:

    tinyMCE.execCommand('mceAddControl',false,'the_textareas_id_here');

  3. 之前切換到一個新的標籤,觸發保存在當前文本區域(這將會把TinyMCE的編輯器的內容回實際窗體的文本區域。

    tinyMCE的。triggerSave();

  4. 刪除當前TinyMCE的實例:

    tinyMCE.execCommand( 'mceFocus',假, 'the_textareas_id_here');
    tinyMCE.execCommand('mceRemoveControl',false,'the_textareas_id_here');

  5. 切換到新的選項卡,重複步驟1

+0

嗨Mithlab,我也有同樣的問題....有沒有什麼辦法在每個tinymce.init()方法之前刪除或銷燬tinymce數組?你能否提供更多的細節或代碼片段? – Raje

0

這是一個TinyMCE的錯誤。在內部,tinymce代碼在粘貼時使用<span id="mce_marker"></span>來記住插入符號的位置。在驗證生成的片段時,在粘貼之後,跨度被認爲是無效並被移除,從而通過移除標記來破壞代碼。 此問題將在下一個官方的tinymce次要版本中修復。有這種問題的一些解決方法。一種是添加idmce-data-type屬性至spansas valid elements (init setting)。例如:

// The valid_elements option defines which elements will remain in the edited text when the editor saves. 
    valid_elements: "@[id|class|title|style]," + 
    "a[name|href|target|title]," + 
    "#p,-ol,-ul,-li,br,img[src],-sub,-sup,-b,-i,-u" + 
    "-span[data-mce-type]",