2010-06-16 130 views
2

當我嘗試創建小插件以允許我在網站上的所有textareas上打開和關閉所見即所得時,會出現問題。TinyMCE + jQuery +自定義插件= tinymce未定義?

//$('form.default textarea').each(function(){ 
// console.log($('<a href="#">Enable WYSIWYG editor</a>').insertAfter('form.default textarea').prev('textarea.wysiwyg').tinymce().hide()); 
//}); 

完整的(有點簡化)的代碼如下所示:

$('textarea.wysiwyg').tinymce({ 
    skin : 'cirkuit', 
    theme : 'advanced', 
    plugins : 'pagebreak,style,layer,advlink,inlinepopups,contextmenu,paste,directionality,noneditable,nonbreaking,xhtmlxtras,template', 
    // Theme options 
    theme_advanced_buttons1 : 'formatselect,fontsizeselect,forecolor,|,bold,italic,strikethrough,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,|,link,unlink,|,image,|,code,paste,pastetext,pasteword,removeformat,|,backcolor,|,underline,justifyfull,sup,|,outdent,indent,|,hr,charmap,|,undo,redo', 
    theme_advanced_buttons2 : '', 
    theme_advanced_buttons3 : '', 
    theme_advanced_toolbar_location : 'top', 
    theme_advanced_toolbar_align : 'left', 
    theme_advanced_statusbar_location: 'bottom', 
    theme_advanced_resizing : true, 
    theme_advanced_resize_horizontal : false, 
    height : 500, 
    theme_advanced_resizing_min_height : 500, 
    document_base_url : 'http://static.<?=$settings['system_host']?>/' 
}); 

$('textarea.wysiwyg').each(function() { 
    $(this).tinymce().hide(); 
}); 

什麼錯誤? FireBug說tinymce()在undefined;這個消息發生在每個()循環中。因此,tinymce()實際上已經初始化了。

我真的迷失了方向,可能會造成這種情況。

回答

1

這裏就像你切換功能正在尋找來自:http://tinymce.moxiecode.com/punbb/viewtopic.php?id=436

var tinyMCEmode = true; 
function toogleEditorMode(sEditorID) { 
    try { 
     if(tinyMCEmode) { 
      tinyMCE.removeMCEControl(tinyMCE.getEditorId(sEditorID)); 
      tinyMCEmode = false; 
     } else { 
      tinyMCE.addMCEControl(document.getElementById('pagecontent'), sEditorID); 
      tinyMCEmode = true; 
     } 
    } catch(e) { 
     //error handling 
    } 
} 

要使用:

<a href="#" title="toogle TinyMCE" onclick="toogleEditorMode('pagecontent');">Toogle TinyMCE</a> 

我懷疑你的問題是使用jQuery來做到這一點時,TinyMCE的使用自己的JavaScript圖書館。它顯然不喜歡隱藏。我會使用類似於我們所知道的例子。