TinyMCE 插件:在元素上显示工具提示
TinyMCE plugin: show a tooltip on an element
是否可以在 TinyMCE 编辑器中的元素上显示带有 HTML 内容的工具提示?我正在创建一个插件,它必须用附加内容注释一些单词,我想在悬停相关单词时显示这些工具提示。问题是TinyMCE的文档好像很烂
像这样:
editor.on("click", function(e) {
editor.showTooltipOnElement(e.target, "<p>Hello, I am a tooltip");
});
我没有使用默认的 HTML title 属性,因为我想在工具提示中包含自定义 HTML 内容。
所以我自己解决了这个问题,虽然有点老套。我使用 TinyMCE 上下文菜单功能在所选元素上创建上下文菜单,然后用我的自定义 HTML 替换上下文菜单的内容。好处是单击 window 中的任意位置也会再次隐藏菜单。
editor.on("click", function(e) {
var menu = new tinymce.ui.Menu({
items: [{
text: "Some tooltip text"
}],
context: "contextmenu",
onhide: function() { menu.remove(); }
});
menu.renderTo(document.body);
menu.$el.html(htmlGenerator());
var pos = tinymce.DOM.getPos(editor.getContentAreaContainer());
var targetPos = editor.dom.getPos(target);
var root = editor.dom.getRoot();
if(root.nodeName === "BODY") {
targetPos.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
targetPos.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
} else {
targetPos.x -= root.scrollLeft;
targetPos.y -= root.scrollTop;
}
pos.x += targetPos.x;
pos.y += targetPos.y;
menu.moveTo(pos.x, pos.y + target.offsetHeight + 5);
menu.$el.removeClass("mce-container");
});
我在按钮属性上用 tooltip
解决了它:
tinymce.init({
...other
setup: function(editor)
{
editor.addButton('mybutton', {
type: 'menubutton',
tooltip: "My custom button",
icon: 'myicon',
menu: [
{
text: 'Action_A',
onclick: function() {
editor.insertContent(' {{A}} ');
}
},
{
text: 'Action_B',
onclick: function() {
editor.insertContent(' {{B}} ');
}
},
]
});
}
..other
});
此致
工具提示的问题是,如果分配给 TinyMCE 内容中的元素,它将不会滚动。
除非您也在 TinyMCE 内容中移动工具提示并使用“.mce-offscreen-selection”包装器。
还有很多工作和可能的错误需要处理。
最简单的解决方案是这样的:
<span data-mytooltip="My Tooltip">This</span> is content in TinyMCE
然后放CSS样式:
.span[data-mytooltip]{ position:relative; }
.span[data-mytooltip]:before{
content:attr(data-mytooltip);
position:absolute;
top:-15px;background:#ffffcc;color:#000;
}
你懂的。
是否可以在 TinyMCE 编辑器中的元素上显示带有 HTML 内容的工具提示?我正在创建一个插件,它必须用附加内容注释一些单词,我想在悬停相关单词时显示这些工具提示。问题是TinyMCE的文档好像很烂
像这样:
editor.on("click", function(e) {
editor.showTooltipOnElement(e.target, "<p>Hello, I am a tooltip");
});
我没有使用默认的 HTML title 属性,因为我想在工具提示中包含自定义 HTML 内容。
所以我自己解决了这个问题,虽然有点老套。我使用 TinyMCE 上下文菜单功能在所选元素上创建上下文菜单,然后用我的自定义 HTML 替换上下文菜单的内容。好处是单击 window 中的任意位置也会再次隐藏菜单。
editor.on("click", function(e) {
var menu = new tinymce.ui.Menu({
items: [{
text: "Some tooltip text"
}],
context: "contextmenu",
onhide: function() { menu.remove(); }
});
menu.renderTo(document.body);
menu.$el.html(htmlGenerator());
var pos = tinymce.DOM.getPos(editor.getContentAreaContainer());
var targetPos = editor.dom.getPos(target);
var root = editor.dom.getRoot();
if(root.nodeName === "BODY") {
targetPos.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
targetPos.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
} else {
targetPos.x -= root.scrollLeft;
targetPos.y -= root.scrollTop;
}
pos.x += targetPos.x;
pos.y += targetPos.y;
menu.moveTo(pos.x, pos.y + target.offsetHeight + 5);
menu.$el.removeClass("mce-container");
});
我在按钮属性上用 tooltip
解决了它:
tinymce.init({
...other
setup: function(editor)
{
editor.addButton('mybutton', {
type: 'menubutton',
tooltip: "My custom button",
icon: 'myicon',
menu: [
{
text: 'Action_A',
onclick: function() {
editor.insertContent(' {{A}} ');
}
},
{
text: 'Action_B',
onclick: function() {
editor.insertContent(' {{B}} ');
}
},
]
});
}
..other
});
此致
工具提示的问题是,如果分配给 TinyMCE 内容中的元素,它将不会滚动。 除非您也在 TinyMCE 内容中移动工具提示并使用“.mce-offscreen-selection”包装器。 还有很多工作和可能的错误需要处理。
最简单的解决方案是这样的:
<span data-mytooltip="My Tooltip">This</span> is content in TinyMCE
然后放CSS样式:
.span[data-mytooltip]{ position:relative; }
.span[data-mytooltip]:before{
content:attr(data-mytooltip);
position:absolute;
top:-15px;background:#ffffcc;color:#000;
}
你懂的。