Tinymce:如何显示弹出式动态工具栏;
Tinymce: How to display a popover dynamic toolbar;
我有以下带有 html 的简单脚本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script> <!-- tinymce dependency -->
<script>
tinymce.PluginManager.add('imageClick',(editor)=>{
editor.on('click',function(event){
const element = event.target;
//add code to open the internal toolbar
})
})
tinymce.init({
selector:'textarea',
skin: 'lightgray',
theme: 'modern',
plugins: 'link image paste autolink media lists imageClick',
toolbar: ['bold italic underline | alignleft aligncenter alignright alignjustify | link media image | undo redo '],
});
</script>
</head>
<body>
<textarea>Next, get a free TinyMCE Cloud API key!</textarea>
</body>
</html>
现在我想在图像上显示一个自定义工具栏,其中包含一些自定义提供的按钮。与 https://www.tinymce.com/docs/plugins/imagetools/ 类似,但我不知道该怎么做。
您是否知道如何以编程方式在 tinymce 中的特定 html 元素上创建自定义工具栏?
提供的功能是 editor.addContextToolbar
,您可以在其中找到相关文档:
https://www.tinymce.com/docs/api/tinymce/tinymce.editor/#addcontexttoolbar
换句话说,推荐的开发插件的方法是:
tinymce.PluginManager.add('imageClick',function(editor){
var lastSelectedImage=undefined;
function addEvents() {
editor.on('click', function (e) {
if (lastSelectedImage && lastSelectedImage.src != e.element.src) {
lastSelectedImage = undefined;
}
// Set up the lastSelectedImage
if (isEditableImage(e.element)) {
lastSelectedImage = e.element;
}
});
}
function isEditableImage(img) {
var selectorMatched = editor.dom.is(img, 'img:not([data-mce-object],[data-mce-placeholder])');
return selectorMatched;
}
function addToolbars() {
var toolbarItems = editor.settings.myimagetools_toolbar;
if (!toolbarItems) {
toolbarItems = 'alignleft aligncenter alignright alignjustify';
}
editor.addContextToolbar(
isEditableImage,
toolbarItems
);
}
addToolbars()
addEvents()
})
基于imagetools插件的源代码。
提示:
下载tinymce开发包即可获取插件源码:
解压缩它 && 查看 ^location_you_unziped/tinymce/src/plugins^
以便查看并将你的插件基于 tinymce 提供的插件。
我有以下带有 html 的简单脚本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script> <!-- tinymce dependency -->
<script>
tinymce.PluginManager.add('imageClick',(editor)=>{
editor.on('click',function(event){
const element = event.target;
//add code to open the internal toolbar
})
})
tinymce.init({
selector:'textarea',
skin: 'lightgray',
theme: 'modern',
plugins: 'link image paste autolink media lists imageClick',
toolbar: ['bold italic underline | alignleft aligncenter alignright alignjustify | link media image | undo redo '],
});
</script>
</head>
<body>
<textarea>Next, get a free TinyMCE Cloud API key!</textarea>
</body>
</html>
现在我想在图像上显示一个自定义工具栏,其中包含一些自定义提供的按钮。与 https://www.tinymce.com/docs/plugins/imagetools/ 类似,但我不知道该怎么做。
您是否知道如何以编程方式在 tinymce 中的特定 html 元素上创建自定义工具栏?
提供的功能是 editor.addContextToolbar
,您可以在其中找到相关文档:
https://www.tinymce.com/docs/api/tinymce/tinymce.editor/#addcontexttoolbar
换句话说,推荐的开发插件的方法是:
tinymce.PluginManager.add('imageClick',function(editor){
var lastSelectedImage=undefined;
function addEvents() {
editor.on('click', function (e) {
if (lastSelectedImage && lastSelectedImage.src != e.element.src) {
lastSelectedImage = undefined;
}
// Set up the lastSelectedImage
if (isEditableImage(e.element)) {
lastSelectedImage = e.element;
}
});
}
function isEditableImage(img) {
var selectorMatched = editor.dom.is(img, 'img:not([data-mce-object],[data-mce-placeholder])');
return selectorMatched;
}
function addToolbars() {
var toolbarItems = editor.settings.myimagetools_toolbar;
if (!toolbarItems) {
toolbarItems = 'alignleft aligncenter alignright alignjustify';
}
editor.addContextToolbar(
isEditableImage,
toolbarItems
);
}
addToolbars()
addEvents()
})
基于imagetools插件的源代码。
提示:
下载tinymce开发包即可获取插件源码:
解压缩它 && 查看 ^location_you_unziped/tinymce/src/plugins^
以便查看并将你的插件基于 tinymce 提供的插件。