Как получить текущую позицию блока в tinymce? - PullRequest
2 голосов
/ 02 декабря 2011

Предположим, у меня есть такой обработчик:

ed.onNodeChange.add(function(ed, cm, e) {
});

Как получить позицию (координаты верхнего левого угла) текущего объекта e, который вызвал событие?

Iнужно, чтобы это было в состоянии нарисовать мое собственное всплывающее окно (div) прямо под / над текущим блоком.

1 Ответ

2 голосов
/ 02 декабря 2011

Попробуйте:

Относительно окна редактора:

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

    /* Ex:
     *   Object
     *   x: 8
     *   y: 30
     */
});

Относительно тела, в котором находится редактор:

// From /252587/poluchit-pozitsiy-x-y-html-elementa
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;
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...