2
讓我們假設我有這樣的處理程序:如何獲取tinymce中的當前塊位置?
ed.onNodeChange.add(function(ed, cm, e) {
});
如何獲得位置(左上角座標)已觸發的事件當前對象e
的?
我需要這個能夠在當前塊的下方/上方繪製我自己的浮動彈出窗口(div)。
讓我們假設我有這樣的處理程序:如何獲取tinymce中的當前塊位置?
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;
});
}
});
感謝。但它返回相對於編輯器的座標。爲了繪製我自己的浮動div我需要絕對的。或者我錯過了什麼? – zerkms
好吧,爲了保持簡單,您可以始終獲取編輯器窗口的座標,並將它們添加到'tinymce.DOM.getPos()'的結果中。看到我的例子http://simshaun.com/tinymce/blockcoords/ – simshaun
是的,也得到了它。感謝您的幫助 – zerkms