2011-12-01 26 views
2

讓我們假設我有這樣的處理程序:如何獲取tinymce中的當前塊位置?

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

如何獲得位置(左上角座標)已觸發的事件當前對象e的?

我需要這個能夠在當前塊的下方/上方繪製我自己的浮動彈出窗口(div)。

回答

2

試試這個:

相對於編輯器窗口:

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; 
     }); 
    } 
}); 
+0

感謝。但它返回相對於編輯器的座標。爲了繪製我自己的浮動div我需要絕對的。或者我錯過了什麼? – zerkms

+0

好吧,爲了保持簡單,您可以始終獲取編輯器窗口的座標,並將它們添加到'tinymce.DOM.getPos()'的結果中。看到我的例子http://simshaun.com/tinymce/blockcoords/ – simshaun

+0

是的,也得到了它。感謝您的幫助 – zerkms