Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 15/03/2010, 20h35   #1
Futur Membre du Club
 
Inscription : mai 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 71
Points : 15
Points : 15
Par défaut position de curseur dans div

Bonsoir à tous,

voilà il y a de cela quelques jours je cherchais un moyen de récupérer la position de mon curseur sur un élément <div> avec un l'option contentedit ="true". Après d'interminables recherches, je suis tombé sur cette solution qui fonctionne à merveille :

http://niichavo.wordpress.com/2009/0...rsor-position/

Du moins elle fonctionne à merveille, à un détail près ! Lorsque j'intègre des tags html dans ma div éditable, la fonction ne me retourne plus la bonne position.

Par exemple si je fais un essai sur "le chat est noir", cela va fonctionner, par contre sur "le <strong>chat</strong> est noir", ça ne va pas fonctionner car il détecte apparemment ma balise "<" comme un nouveau noeud.

Est ce que l'un d'entre vous aurait une idée qui me permettrait de contourner cette limite.

Je vous mets ci dessous le code de la fonction permettant de retourner la position du curseur :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function getCursorPos() {
        var cursorPos;
        if (window.getSelection) {
            var selObj = window.getSelection();
            var selRange = selObj.getRangeAt(0);       
            cursorPos =  findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset;
        /* FIXME the following works wrong in Opera when the document is longer than 32767 chars */
        }
 
        else if (document.selection) {
            var range = document.selection.createRange();
            var bookmark = range.getBookmark();
            /* FIXME the following works wrong when the document is longer than 65535 chars */
            cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] */
        }
        return cursorPos;
    }
 
function findNode(list, node) {
    for (var i = 0; i < list.length; i++) {
        if (list[i] == node) {            
            return i;
        }
    }
    return -1;
}
Par avance merci pour vos idées et conseils.
Sanceray3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 08h31   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 074
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 074
Points : 43 293
Points : 43 293
une petite recherche avec offsetParent ...
Sujet déja traité et je pense même qui doit y avoir un script dans la FAQ ou les contributions à ce propos...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 18h14   #3
Futur Membre du Club
 
Inscription : mai 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 71
Points : 15
Points : 15
Merci SpaceFrog pour votre réponse.

J'ai fait quelques recherches sur le forum avec le terme "offsetParent" mais je n'arrive pas à trouver "la chose" qui peut s'appliquer à mon cas de figure. Ce que je souhaite simplement c'est pouvoir lui passer des exclusions pour pas que ce dernier considère des balises comme <strong> comme étant des noeuds.

Peux tu m'aiguiller un peu plus stp parce que là je galère vraiment avec cette fonction.

Merci d'avance.
Sanceray3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 16h15.


 
 
 
 
Partenaires

Hébergement Web