gpt4 book ai didi

javascript - 如何在 TinyMCE 4 中向自定义菜单添加多个元素并在单击时在编辑器 Canvas 上显示其内容?

转载 作者:行者123 更新时间:2023-11-30 16:17:11 25 4
gpt4 key购买 nike

我试图在 TinyMCE4 中添加一个具有不同选项的菜单,当我单击一个元素时,编辑器 Canvas 中的选项文本。我仅使用找到的以下代码成功添加了带有一个选项的菜单:

tinymce.init({
language: 'es',
selector: '#plantillaEditor',
height : '500',
width : '300',
menu : {
file : {title : 'File' , items : 'newdocument'},
edit : {title : 'Edit' , items : 'undo redo | cut copy paste pastetext | selectall'},
insert : {title : 'Insert', items : 'link media | template hr'},
view : {title : 'View' , items : 'visualaid'},
format : {title : 'Format', items : 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table : {title : 'Table' , items : 'inserttable tableprops deletetable | cell row column'},
tools : {title : 'Tools' , items : 'code'},
tags: {title : 'Etiquetas', items : 'newmenuitem'}
},
menubar: 'file edit format table tags',
setup: function(editor) {
editor.addMenuItem('newmenuitem', {
text: 'new menu',
context: 'tags',
onclick: function () { console.log(this); }
}
);
},
readonly: ((getUrlVars()["mode"]=='view') ? true : false),
plugins:'image imagetools link fullscreen fullpage textcolor colorpicker advlist autolink autosave charmap code contextmenu insertdatetime save print table',
toolbar: "customToolbar undo redo | save | print | styleselect | forecolor backcolor | bold italic | "+
"alignleft aligncenter alignright alignjustify | table bullist numlist outdent indent | "+
" link | image | charmap code | insertdatetime",
insertdatetime_formats: ["%H:%M", "%d-%m-%Y", "%S:%M:%I %p", "Buenos Aires, %d de %B de %Y"],
contextmenu: "copy | cut | paste | link image imageupload | cell row column deletetable",
autosave_interval: "60s",
paste_data_images: true,

save_onsavecallback: function () {

var bodyHtml=$editor.val().match(/(?:.(?!<\s*body[^>]*>))*\>.+/)[0];
var mode='<?php echo $mode?>';
var namePattern;
var namePrefix;
var textAreaName;


if(mode!=='user'){
var request = $.ajax({
type: 'POST',
url: '/editor/processDataHtml',
data: { editorData: bodyHtml,
id_acto_doc_plantilla : '<?php echo $id_acto_doc_plantilla; ?>'
},
success: function(data) {
alert(data);
},
error: function(data) {
alert(data);
}
})
}else{

$htmlInputParent.val(bodyHtml);

}
}
});

我必须解决两件事:

1)如何向菜单添加多个元素?没有关于“设置:”参数显示和示例的文档,我尝试在菜单上添加另一个“日期”元素:

                tags: {title : 'Etiquetas', items : 'newmenuitem date'}

然后是包含多个元素的设置参数:

                  setup: function(editor) {
editor.addMenuItem('newmenuitem', {
text: 'new menu',
context: 'tags',
onclick: function () { console.log(this); }
}),
editor.addMenuItem('date', {
text: 'Date',
context: 'tags',
onclick: function () { console.log(this); }
});
},

但是好像不行.....

2)第二个问题是我不知道如何在单击元素时检索菜单上选项的文本值。当我记录“this”时,我在对象的属性中进行了搜索,但找不到保存该项目值的 Prop 。

有人知道我该怎么做这两件事吗?

编辑:我解决了问题#1) ....这只是一个错字,设置的正确代码:参数是:

            tags: {title : 'Etiquetas', items : 'newmenuitem date'},

> setup: function(editor) {
> editor.addMenuItem('newmenuitem', {
> text: 'new menu',
> context: 'tags',
> onclick: function () { console.log(this); }
> });
> editor.addMenuItem('date', {
> text: 'Date',
> context: 'tags',
> onclick: function () { console.log(this); }
> });
> },

问题 #2) 仍然无效。我也尝试使用 javascript 和 jquery 将菜单选项的文本内容记录到控制台,但没有成功,对象被正确返回,但是当我使用 javascript 控制台过滤对象的属性时,我找不到属性... ..

最佳答案

我相信 this 返回的对象的 settings 属性会有你需要的:

editor.addMenuItem('menuitem1', {
text: 'Text for Menu Item 1',
context: 'tags',
onclick: function () {
console.log(this.settings.text);
}
});

请注意,您甚至可以向传递给 addMenuItem 方法的对象添加自定义属性,并在运行时访问这些属性:

editor.addMenuItem('menuitem1', {
text: 'Text for Menu Item 1',
customAttrib: 'Colorado Avalanche',
context: 'tags',
onclick: function () {
console.log(this.settings.text);
console.log(this.settings.customAttrib);
}
});

第二个 console.log 引用了 customAttrib 属性,它不是必需属性的一部分。 TinyMCE 只需要一个有效的 JavaScript 对象,因此只要您放入 TinyMCE 需要的东西,您就可以将任何您喜欢的东西放在那里。

关于javascript - 如何在 TinyMCE 4 中向自定义菜单添加多个元素并在单击时在编辑器 Canvas 上显示其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com