2016-09-14 5 views
0

Используя tinyMCE 4.2, мне нужно изменить текст (пользовательской) кнопки на панели инструментов каждый раз, когда пользователь щелкает в любом месте редактора.TinyMCE 4 изменить текст панели инструментов на текстовом редакторе

Это соответствующий код:

tinymce.init({ 

    //code ommitted... 

    toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image jbimages navigationbutton glossary", 

    setup: function(editor){ 

     //add "Glossary" button 
     editor.addButton('glossary', { 
      name: 'glossary', 
      text: 'Glossary', 
      onclick: function(){ 
       /* 
       //commented on purpose 
       var button = this; 
       var updatedButtonText = "Some updated button text"; 
       button.text = updatedButtonText; 
       */ 
      } 
     });//end addButton 

     editor.on('click', function(){ 
      var updatedButtonText = "Some updated button text"; 

      //update the button text: 
      editor.buttons.glossary.text = updatedButtonText; //doesn't work 
      window.parent.tinyMCE.activeEditor.buttons.glossary.text = updatedButtonText; //doesn't work either 

      //confirm changes: 
      console.log(editor.buttons.glossary.text); //correctly prints "Some updated button text" 
      console.log(window.parent.tinyMCE.activeEditor.buttons.glossary.text); //correctly prints "Some updated button text" as well 
     }); 

    }//end setup 
});//end tinymce.init 

Так что проблема на самом деле является то, что, в то время как text свойство на кнопку объекта делает изменения, это изменение не отражается в редакторе, где текст кнопки остается «Глоссарий» , Интересно, если я сделаю то же самое с помощью функции кнопки onclick (так что, если я раскомментирую блок комментариев с комментариями), тогда она отлично работает, как ожидалось, - текст кнопки обновляется в редакторе.

Я провел часы в документации TinyMCE 4, пытаясь найти некоторую релевантную информацию, но, судя по всему, напрасно. Есть идеи?

ответ

0

Как только панель инструментов редактора загружена, TinyMCE не поддерживает изменение значков/текста кнопок. Вы можете изменить, если кнопка переключена на «включено» или «выключена» (например, кнопка «Полужирный», когда вы помещаете курсор на текст, который является или не выделен полужирным шрифтом), но вы не можете изменить фактический текст/значок.

Объект JavaScript, который использовался для определения кнопки глоссария, по-прежнему находится в памяти после полной загрузки редактора, поэтому вы можете делать что-то с этим объектом, например изменить значение свойства или console.log, но значение TinyMCE не собирается назад и посмотрите на этот объект кнопки и обновите кнопку после загрузки панели инструментов.

+0

Вау, я этого не ожидал. Поэтому он действительно обновит кнопку, если свойство 'text' будет изменено, если в ** ** включена функция' onclick', но она не будет обновлять его, если свойство 'text' изменяется, когда в ** редакторе ** 'onclick' функция? Потому что, если это так, мне не очень-то понятно, почему это было бы так ... – pazof

+0

Я не могу получить текст кнопки для изменения в пользовательском интерфейсе, даже если я помещаю код в собственную кнопку onClick мероприятие. (Он изменится в объекте JavaScript, но не визуально на панели инструментов) Можете ли вы сделать скрипт JS, показывающий, что он работает? –