2017-08-28 57 views
0

我使用WordPress的wp_editor函數來設置TinyMCE實例。我想用一些jQuery函數向TinyMCE添加一些額外的功能,但是似乎我僅限於使用TinyMCE函數來處理諸如focus,changeblur之類的事情。如何引用TinyMCE'init_instance_callback'中的函數?

當我以這種方式設置TinyMCE時,我基本上被迫使用init_instance_callback屬性。

PHP

$default_settings = array( 
    'media_buttons' => false, 
    'quicktags' => false, 

    'tinymce' => array(
     'init_instance_callback' => 'function(editor) { // Forced to use JS in PHP... 
       editor.on("focus", function(ed) { 
        tinyMCEFocus(ed); 
       }); 
      }' 
    ) 
); 

我有一個不同的文件,我想處理TinyMCE的JavaScript的,因爲我不想寫我在PHP文件,我叫wp_editor()所有的JavaScript。

在我的editor.on("focus", function(ed) {中,我放置了一個函數,該函數位於我的外部JS文件中,其中還定義了jQuery。

JS

(function($) { 

    var tinyMCEFocus = function(ed) {   
     console.log('Do stuff with jQuery if this works'); 
    } 

})(jQuery); 

但不知何故,在調用這個函數的時候,它根本不工作,給我一個錯誤:

(index):401 Uncaught ReferenceError: tinyMCEFocus is not defined

說實話,到目前爲止,使用TinyMCE的自定義的東西都有曾經是一個無聊的人,但也許我做錯了什麼?有沒有更好的方法來處理這種類型的事情?如果沒有,爲什麼我的功能不工作?

回答

0

再一次,在發佈後幾分鐘回答我自己的問題。

我發現你必須給該函數一個「全局」範圍,將其分配給窗口。這也讓我簡單地通過一個函數init_instance_callback

'tinymce' => array(
    'init_instance_callback' => 'customTinyMCEFunctions' 
) 

而在JavaScript中。

(function($) { 
    window.customTinyMCEFunctions= function(editor) { 
     // Do stuff 
    } 
})(jQuery);