TinyMCE + jQuery + пользовательский плагин = tinymce не определен? - PullRequest
2 голосов
/ 17 июня 2010

Проблема возникает, когда я пытаюсь создать небольшой плагин, позволяющий мне включать и выключать WYSIWYG для всех текстовых областей на сайте.

//$('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 () в неопределенном ;это сообщение появляется в каждом цикле ().Таким образом, tinymce () фактически инициализирован.

Я действительно заблудился в отношении того, что может быть причиной этого.

1 Ответ

1 голос
/ 20 сентября 2010

Вот функция переключения, которую вы ищете из: 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. Видимо, не любит скрывать. Я бы использовал что-то вроде приведенного примера, поскольку мы знаем, что это работает.

...