如何在TinyMCE中引用函数' init_instance_callback'?

时间:2017-08-28 15:25:17

标签: javascript jquery wordpress tinymce tinymce-4

我使用WordPress的wp_editor功能来设置TinyMCE实例。我想使用一些jQuery函数为TinyMCE添加一些额外的功能,但我似乎仅限于将{TinyMCE函数用于focuschangeblur等内容。

当我以这种方式设置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,因为我不想在我调用wp_editor()的PHP文件中编写所有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

老实说,到目前为止,使用TinyMCE进行自定义操作一直很困扰,但也许我做错了什么?有没有更好的方法来处理这类事情?如果没有,为什么我的功能不起作用?

1 个答案:

答案 0 :(得分:0)

然而,在发布之后仅仅几分钟就回答了我自己的问题。

我发现你必须通过将该功能分配给窗口来为该功能提供“全局”范围。这也让我可以简单地将一个函数传递给init_instance_callback

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

在JavaScript中。

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