position curseur textarea iframe caractère

position curseur textarea iframe caractère - HTML/CSS - Programmation

Marsh Posté le 20-12-2007 à 14:34:36    

Bonjour,
 
J'utilise TinyMCE et j'aimerai pouvoir ajouter une action en fonction des keydown. Pour cela j'ai besoin de récupérer plusieurs informations.
J'ai une IFrame qui est contenue dans mon textarea.
 
En fonction de la position de mon curseur, je n'ai aucun souci a récupérer le noeud où je suis, récupérer le contenu html de ma sélection et d'avoir le nombre total de caractères de mon Iframe.
 
En revanche je n'arrive pas à récupérer la position de mon curseur, quand je clique sur un endroit de mon textarea sans faire de selection. Ce qui est encore plus compliqué, est que je souhaite récupérer la position de mon curseur dans le contenu html.
 
Exemple :
<h4>Sal|ut</h4>
mon curseur est ici entre les caractères 7 et 8
 
Voila pour l'instant mon code, je ne sais pas du tout comment faire pour réaliser la suite.

Code :
  1. /*maxime suppression IE*/
  2. //valeur du noeud en fonction de la position du curseur
  3. var node = tinyMCE.selectedElement;
  4. //contenu html de la selection    
  5. var maframe = document.getElementById("mce_editor_0" );
  6. var doc = (maframe.window?maframe.window:maframe.contentWindow).document;
  7. var rng = doc.selection.createRange();
  8. var txthtml = rng.htmlText;
  9. //selection de tout le contenu html de l'iframe
  10. var frametotal = maframe.contentWindow.document.body.innerHTML;
  11. //recupere la position du caractère avant la selection
  12. var posDeb = frametotal.indexOf(txthtml);
  13. //recupere tout le contenu avant la selection
  14. var firstTextValue = frametotal.substring(0, posDeb);

Reply

Marsh Posté le 20-12-2007 à 14:34:36   

Reply

Marsh Posté le 21-12-2007 à 10:23:11    

Personne n'a une idée ?

Reply

Marsh Posté le 14-01-2008 à 16:55:46    

Salut watcha, si tu es toujours interessé par une solution fais moi signe, je suis actuellement en stage et je viens de finir exactement ce que tu recherches.
 
var editor = document.getElementById( 'MailText_ifr' );  (tiny rajoute _ifr à la fin des id textarea)
var doc = editor.contentWindow.document;
var win = editor.contentWindow;
 
En gros avec IE il faut passer par deux méthodes sur objet, ici pour une image
var imgTag = '<img id=....
var sel = doc.selection;
var range = sel.createRange();    
range.collapse( false );
range.pasteHTML( imgTag );
 
 
Ac firefox  
var sel = win.getSelection();
var range = sel.getRangeAt(0);
range.collapse(false);    
var img = doc.createElement( "img" );  
img.src = src;
img.alt = '';
img.id = imgID;
img.name = imgID;
img.setAttribute( 'style', 'vertical-align:text-bottom;' );    
range.insertNode(img);
 
 
 
Voilà en esperant t'avoir aidé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed