2013-12-21 59 views
2

我意识到这个问题已被问及几次回答,但我仍然无法使许多解决方案的工作。似乎大部分讨论都比较老,可能与4.x不兼容。我如何触发tinymce 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!!!'); 
      }); 
     }); 
    } 
}); 

回报: “遗漏的类型错误:无法调用未定义的 '添加',”

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

tinymce.activeEditor.on('focus', function(e) { 
    console.log(e.blurredEditor); 
}); 

回报:“未捕获TypeError:无法调用未定义的“on”方法“ (但不确定是否将它放在正确的位置)

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

    setup: function(editor) { 
     editor.on('focus', function(e) { 
      console.log('focus event', e); 
     }); 
    } 
}); 

回报: “未捕获的SyntaxError:意外的标识符”

此,但只有在启动时,编辑工作。其他的事情我做过尝试,但还没有得到工作:

tinymce.FocusManager tinymce.activeEditor

我缺少什么?谢谢。

UPDATE:发现精美的工作解决方案:Why TinyMCE get focus and blur event, when user jump from other input field?

回答

3

你cuestion标题它对触发研究的重点和模糊事件,但你真的是问有关处理这些事件。 如果有人还在寻找触发事件,该解决方案应该是:

tinymce.init({ 
     selector: "#textarea_123", 
     ... 
    }); 

然后,将焦点设置:

var inst = tinyMCE.EditorManager.get('textarea_123'); 
inst.focus(); 
+0

你知道模糊相应的功能是什么吗? – velop

+0

似乎没有一个。也许把重点放在其他方面可能会有帮助。 https://www.tinymce.com/docs/api/tinymce/tinymce.editor/ – glerendegui

6

看到小提琴在http://fiddle.tinymce.com/8Xeaab/1

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"); 
     }); 
    } 
}); 
-1

我最近遇到了这个问题,虽然我在angularjs中这样做,但我能够通过创建一个指令来实现对它的修复,当你点击它时注册一个指令nd然后清除html正文中的activeElement。我将添加下面的指令。你只需在对象上添加点击即可,就像你将ng-cloak添加到标签一样。

(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 }); 
     }); 
     }); 
    } 
    } 
})(); 
相关问题