我想在 Tiny MCE 4 中获得插入符号的位置,但我不想获得行/列号 - 我想获得以像素为单位的位置(x 和 y 维度)。它可以与任何事物相关。最后一件事 - 我想这样做而不在内容中创建任何额外的标签,比如书签。TinyMCE 有办法做到这一点吗?或者是否可以选择以像素为单位获取书签位置,然后将其删除?
感谢您的回复
我想在 Tiny MCE 4 中获得插入符号的位置,但我不想获得行/列号 - 我想获得以像素为单位的位置(x 和 y 维度)。它可以与任何事物相关。最后一件事 - 我想这样做而不在内容中创建任何额外的标签,比如书签。TinyMCE 有办法做到这一点吗?或者是否可以选择以像素为单位获取书签位置,然后将其删除?
感谢您的回复
好的,我找到了。
首先你必须得到 tinymce.Editor 类的实例var editor = new tinymce.Editor(); //or another way, like tinyMCE.activeEditor
接下来获取 tinyMCE 小部件的 jQuery 位置:
var tinymcePosition = $(editor.getContainer()).position();
var toolbarPosition = $(editor.getContainer()).find(".mce-toolbar").first();
现在获取您当前正在编辑的 HTML 节点的位置:
var nodePosition = $(editor.selection.getNode()).position();
var textareaTop = 0;
var textareaLeft = 0;
我们有 Y 轴位置(通过nodePosition.top
),是时候获取 X:
if (editor.selection.getRng().getClientRects().length > 0) {
textareaTop = editor.selection.getRng().getClientRects()[0].top + editor.selection.getRng().getClientRects()[0].height;
textareaLeft = editor.selection.getRng().getClientRects()[0].left;
} else {
textareaTop = parseInt($($this.selection.getNode()).css("font-size")) * 1.3 + nodePosition.top;
textareaLeft = nodePosition.left;
}
我们有textareaTop && textareaLeft
相对于 TinyMCE 编辑器窗口 (textarea) 的插入符号位置。现在是时候获取相对于整个页面(浏览器窗口)的位置了:
var position = $(editor.getContainer()).offset();
var caretPosition = {
top: tinymcePosition.top + toolbarPosition.innerHeight() + textareaTop,
left: tinymcePosition.left + textareaLeft + position.left
}
解决方案基于TinyMCE 3 的自动完成插件,我根据我在 TinyMCE 4 中的需要对其进行了调整。