如何触发tinymce 4.x聚焦和模糊事件

如何触发tinymce 4.x聚焦和模糊事件,tinymce,focus,blur,Tinymce,Focus,Blur,我意识到这个问题已经被问过和回答过好几次了,但我仍然无法让很多解决方案奏效。似乎大多数讨论都比较老,可能与4.x不兼容 我的目标是:能够在聚焦或模糊时启动一些javascript函数。以下是基本代码: $('.tiny-mce').tinymce({ script_url : '/xm_js/tinymce4/tinymce.min.js', }); 我试过这样的例子: $('.tiny-mce').tinymce({ script_url : '/xm_js/tinymce4

我意识到这个问题已经被问过和回答过好几次了,但我仍然无法让很多解决方案奏效。似乎大多数讨论都比较老,可能与4.x不兼容

我的目标是:能够在聚焦或模糊时启动一些javascript函数。以下是基本代码:

$('.tiny-mce').tinymce({
    script_url : '/xm_js/tinymce4/tinymce.min.js',
});
我试过这样的例子:

$('.tiny-mce').tinymce({
    script_url : '/xm_js/tinymce4/tinymce.min.js',

    setup : function(ed) {
        ed.onInit.add(function(ed, evt) {

        var dom = ed.dom;
        var doc = ed.getDoc();

            tinymce.dom.Event.add(doc, 'blur', function(e) {
                alert('blur!!!');
            });
        });
    }
});
返回:“未捕获的TypeError:无法调用未定义的方法'add'”

返回:“未捕获的TypeError:无法调用未定义的“”的“”方法” (但不确定是否放对了位置)

返回:“未捕获的语法错误:意外标识符”

这只在启动编辑器时起作用。其他我尝试过但没有成功的事情:

tinymce.FocusManager tinymce.activeEditor

我错过了什么?谢谢


更新:找到了一个非常有效的解决方案:

你的提示标题是关于触发聚焦和模糊事件的,但你实际上是在询问如何处理这些事件。 如果任何人仍在寻找触发事件的方法,解决方案应:

tinymce.init({
        selector: "#textarea_123",
        ...
     });
然后,要设置焦点:

var inst = tinyMCE.EditorManager.get('textarea_123');
inst.focus();
看小提琴


我最近遇到了这个问题,尽管我是在angularjs中这样做的,但我还是能够通过创建一个指令来实现一个修复,该指令在单击关闭它时注册,然后清除html主体中的activeElement。我将在下面添加指令。您只需通过添加click off来调用对象,就像将ng斗篷添加到标记一样

(function () {
  'user strict';

  angular.module('app.directives').directive('clickOff', ClickOff);

  function ClickOff($parse, $document) {
    var directive = {
      link: link
    };

    return directive;

    function link(scope, $element, attr) {

      var fn = $parse(attr["clickOff"]);

      $element.bind('click', function (event) {
        event.stopPropagation();
      });

      angular.element($document[0].body).bind("click", function (event) {
        scope.$apply(function () {
          $document[0].activeElement.blur();
          fn(scope, { $event: event });
        });
      });
    }
  }
})();

你知道模糊的对应功能是什么吗?似乎没有。也许把注意力放在其他事情上会有所帮助。如果有人仍然希望触发这些事件,在TinyMCE 4和5中,编辑器上有一个“fire”方法来实现这一点。myEditor.fire('blur')工作正常。
var inst = tinyMCE.EditorManager.get('textarea_123');
inst.focus();
tinymce.init({
    selector: "#editme",
    inline: true,
    setup: function(editor) {
        editor.on('focus', function(e) {
            console.log("focus");
        });

        editor.on('blur', function(e) {
            console.log("blur");
        });
    }
});
(function () {
  'user strict';

  angular.module('app.directives').directive('clickOff', ClickOff);

  function ClickOff($parse, $document) {
    var directive = {
      link: link
    };

    return directive;

    function link(scope, $element, attr) {

      var fn = $parse(attr["clickOff"]);

      $element.bind('click', function (event) {
        event.stopPropagation();
      });

      angular.element($document[0].body).bind("click", function (event) {
        scope.$apply(function () {
          $document[0].activeElement.blur();
          fn(scope, { $event: event });
        });
      });
    }
  }
})();