2016-09-14 94 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

哇,我並不期待那樣。所以如果在**按鈕的''onclick'函數中'text'屬性被改變,它確實會更新按鈕,但如果在**編輯器中**時更改了'text'屬性,它將不會更新它'onclick'功能?因爲如果是這樣的話,它對我來說沒有什麼意義,爲什麼它會這樣設計...... – pazof

+0

即使我將按鈕的代碼放在按鈕自己的onClick中,我也無法獲取按鈕的文本以在UI中進行更改事件。 (它會在JavaScript對象中更改,但不會在工具欄上直觀顯示)您可以讓JS小提琴顯示工作嗎? –

相關問題