2011-12-01 3 views
2

Supposons que j'ai ce gestionnaire:Comment obtenir la position de blocage actuelle dans tinymce?

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

Comment obtenir la position (coordonnées coin en haut à gauche) de l'objet courant e qui a tiré un événement?

J'ai besoin de cela pour pouvoir dessiner mon propre popup flottant (div) juste au-dessous/au-dessus du bloc actuel.

Répondre

2

Essayez ceci:

relative à la fenêtre de l'éditeur:

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

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

Par rapport au corps qui détient l'éditeur:

// 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

Merci. Mais il renvoie les coordonnées relatives à l'éditeur. Pour dessiner mon propre div flottant j'ai besoin des absolus. Ou est-ce que je manque quelque chose? – zerkms

+0

Eh bien, pour garder les choses simples, vous pouvez toujours obtenir les coordonnées de la fenêtre de l'éditeur et les ajouter aux résultats de 'tinymce.DOM.getPos()'. Voir mon exemple à http://simshaun.com/tinymce/blockcoords/ – simshaun

+0

ouais, l'ai aussi. Merci pour l'aide – zerkms

Questions connexes