Javascript 如何在tinymce中获取当前块位置?

Javascript 如何在tinymce中获取当前块位置?,javascript,tinymce,Javascript,Tinymce,假设我有这样的处理程序: ed.onNodeChange.add(function(ed, cm, e) { }); 如何获取触发事件的当前对象e的位置(左上角坐标) 我需要它,以便能够在当前块的正下方/正上方绘制我自己的浮动弹出窗口(div)。尝试以下操作: 相对于编辑器窗口: ed.onNodeChange.add(function(ed, cm, e) { console.log( tinymce.DOM.getPos(e) ); /* Ex: * Obj

假设我有这样的处理程序:

ed.onNodeChange.add(function(ed, cm, e) {
});
如何获取触发事件的当前对象
e
的位置(左上角坐标)

我需要它,以便能够在当前块的正下方/正上方绘制我自己的浮动弹出窗口(div)。

尝试以下操作:

相对于编辑器窗口:

ed.onNodeChange.add(function(ed, cm, e) {
    console.log( tinymce.DOM.getPos(e) );

    /* Ex:
     *   Object
     *   x: 8
     *   y: 30
     */
});
// From http://stackoverflow.com/questions/442404/dynamically-retrieve-html-element-x-y-position-with-javascript
function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { y: _y, x: _x };
}

tinyMCE.init({
    // ...
    setup: function(ed) {
        ed.onNodeChange.add(function(ed, cm, e) {
            var coords = tinymce.DOM.getPos(e),
                ed_coords = getOffset( ed.getContentAreaContainer() ),
                x, y;

            x = coords.x + ed_coords.x;
            y = coords.y + ed_coords.y;
        });
    }
});
相对于容纳编辑器的主体:

ed.onNodeChange.add(function(ed, cm, e) {
    console.log( tinymce.DOM.getPos(e) );

    /* Ex:
     *   Object
     *   x: 8
     *   y: 30
     */
});
// From http://stackoverflow.com/questions/442404/dynamically-retrieve-html-element-x-y-position-with-javascript
function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { y: _y, x: _x };
}

tinyMCE.init({
    // ...
    setup: function(ed) {
        ed.onNodeChange.add(function(ed, cm, e) {
            var coords = tinymce.DOM.getPos(e),
                ed_coords = getOffset( ed.getContentAreaContainer() ),
                x, y;

            x = coords.x + ed_coords.x;
            y = coords.y + ed_coords.y;
        });
    }
});

谢谢但它返回相对于编辑器的坐标。为了绘制我自己的浮动div,我需要绝对值。或者我遗漏了什么?好吧,为了简单起见,您可以随时获取编辑器窗口的坐标,并将它们添加到
tinymce.DOM.getPos()
的结果中。看看我的例子是的,我也明白了。谢谢你的帮助呵呵;-)事实上,我发现最合适的方法是在任何地方使用相对坐标(就像tinymce菜单那样)