TinyMCE plugin: show a tooltip on an element
TinyMCE编辑器中的元素上是否可以显示带有HTML内容的工具提示? 我正在创建一个必须用其他内容注释某些单词的插件,并且我希望在悬停相关单词时显示这些工具提示。 问题在于TinyMCE文档似乎非常糟糕。
像这样:
1 2 3 4 | editor.on("click", function(e) { editor.showTooltipOnElement(e.target,"<p> Hello, I am a tooltip"); }); |
我没有使用默认的HTML标题属性,因为我想在工具提示中包含自定义HTML内容。
所以我自己解决了这个问题,虽然有点怪异。 我使用TinyMCE上下文菜单功能在所选元素上创建一个上下文菜单,然后用自定义HTML替换上下文菜单的内容。 好处是单击窗口中的任何位置也会再次隐藏菜单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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"); }); |
我用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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"包装器。
仍有大量工作和可能的错误需要处理。
最简单的解决方案是这样的:
1 | <span data-mytooltip="My Tooltip">This</span> is content in TinyMCE |
然后放上CSS样式:
1 2 3 4 5 6 | .span[data-mytooltip]{ position:relative; } .span[data-mytooltip]:before{ content:attr(data-mytooltip); position:absolute; top:-15px;background:#ffffcc;color:#000; } |
你明白了。