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菜单那样)