2017-08-28 770 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); 
相关问题