如何触发tinymce 4.x聚焦和模糊事件
我意识到这个问题已经被问过和回答过好几次了,但我仍然无法让很多解决方案奏效。似乎大多数讨论都比较老,可能与4.x不兼容 我的目标是:能够在聚焦或模糊时启动一些javascript函数。以下是基本代码:如何触发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
$('.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 });
});
});
}
}
})();