TinyMCE插件:在元素上显示工具提示

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");
});


我用tooltip在按钮属性上解决了它:

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;
  }

你明白了。