事件回调未获取 tinymce 目标信息
Event callback not getting tinymce target information
我在一个页面上有两个 tinymce
的实例,当它们被更改时,我想更新一个最终保存到 localStorage
的 Javascript 对象。
当页面加载时,我可以毫无问题地从 localstorage
填充两个 tinymce
实例,但是当它们发生变化时,我似乎无法传递适当的 jQuery
event
其中包括 event.target
我的 update
处理程序的信息。我怀疑这是由于 iframe
,但我很难过。
在我的 update
回调中,我需要知道 e.target
和 e.target.id
,但它传递了一个不包含该信息的对象,如下所示:
{isTrusted: true, screenX: 953, screenY: 790, clientX: 298, clientY: 20…}
tinymce.init({
setup:function(ed){
ed.on("init",function(e){
switch(e.target.id){
case "intro":
_content = obj.INFO.INTRO.TEXT;
break;
case "conclude":
_content = obj.INFO.CONCLUDE.TEXT;
break;
}
tinyMCE.activeEditor.setContent(_content);
});
ed.on("change",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
//jQuery.Event("edit",{target:e.currentTarget})
update(e);
});
ed.on("keyup",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
update(e);
});
ed.on("click",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
//jQuery.Event("edit",{target:tinyMCE.activeEditor, editor:tinyMCE.activeEditor.id})
update(e);
});
}
});
这里的问题是你获取编辑器id。您可以使用以下方式获取它:
setup:function(ed){
ed.on("init",function(e){
console.log('target id:',e.target.id);
});
ed.on("click",function(e,f){
var editor_id = e.view.frameElement.id.slice(0, -4);
console.log('editor_id:', editor_id);
// or much easier using ed.id
editor_id = ed.id;
// if you want to address the editor body you can use ed.getBody()
var my_editor = tinymce.get(editor_id);
// update(e);
});
},
关于实例,seethe tinymce fiddle 我创建了:http://fiddle.tinymce.com/6mfaab/1
我在一个页面上有两个 tinymce
的实例,当它们被更改时,我想更新一个最终保存到 localStorage
的 Javascript 对象。
当页面加载时,我可以毫无问题地从 localstorage
填充两个 tinymce
实例,但是当它们发生变化时,我似乎无法传递适当的 jQuery
event
其中包括 event.target
我的 update
处理程序的信息。我怀疑这是由于 iframe
,但我很难过。
在我的 update
回调中,我需要知道 e.target
和 e.target.id
,但它传递了一个不包含该信息的对象,如下所示:
{isTrusted: true, screenX: 953, screenY: 790, clientX: 298, clientY: 20…}
tinymce.init({
setup:function(ed){
ed.on("init",function(e){
switch(e.target.id){
case "intro":
_content = obj.INFO.INTRO.TEXT;
break;
case "conclude":
_content = obj.INFO.CONCLUDE.TEXT;
break;
}
tinyMCE.activeEditor.setContent(_content);
});
ed.on("change",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
//jQuery.Event("edit",{target:e.currentTarget})
update(e);
});
ed.on("keyup",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
update(e);
});
ed.on("click",function(e){
//update(jQuery.Event("edit",{target:$(e.currentTarget).find("body")}));
//jQuery.Event("edit",{target:tinyMCE.activeEditor, editor:tinyMCE.activeEditor.id})
update(e);
});
}
});
这里的问题是你获取编辑器id。您可以使用以下方式获取它:
setup:function(ed){
ed.on("init",function(e){
console.log('target id:',e.target.id);
});
ed.on("click",function(e,f){
var editor_id = e.view.frameElement.id.slice(0, -4);
console.log('editor_id:', editor_id);
// or much easier using ed.id
editor_id = ed.id;
// if you want to address the editor body you can use ed.getBody()
var my_editor = tinymce.get(editor_id);
// update(e);
});
},
关于实例,seethe tinymce fiddle 我创建了:http://fiddle.tinymce.com/6mfaab/1