IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

caretPositionFromPoint() | caretRangeFromPoint() | moveToPoint()


Sujet :

JavaScript

  1. #1
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut caretPositionFromPoint() | caretRangeFromPoint() | moveToPoint()
    Salut,

    Peut-on utiliser ces fonctions ou pas ? Laquelle est préférable ? Je parle surtout des deux premières car la troisième c'est pour IE je crois...

    Je demande car je lis qu'elles sont non standarts...

    Pour caretRangeFromPoint() :

    Non standard
    Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.
    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari (WebKit)
    Basic support 43.0 20+ Pas de support 12 15+ (Oui)
    Pour caretPositionFromPoint()
    This is an experimental technology
    Check the Browser compatibility table carefully before using this in production.
    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    Basic support 53.0 (Yes)[1] (Yes)[1] (Yes)[1] (Yes)[1]

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut

    Tu donnes toi même les réponses ...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui mais ce n'est pas clair pour moi, entre la théorie et la pratique (certains l'utilisent apparemment (exemple : http://www.alohaeditor.org/api/ranges.js.html)...).

    Il semble qu'il y ait une différence entre caretRangeFromPoint() et caretPositionFromPoint(), cette dernière semble plus fiable d'après la description...

    Mais peut-être qu'en pratique il faut tester les deux ? Dans le lien que j'ai donné ci-dessus il teste trois fonctions :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function fromPoint(x, y, doc) {
    		if (x < 0 || y < 0) {
    			return null;
    		}
    		if (doc['caretRangeFromPoint']) {
    			return doc['caretRangeFromPoint'](x, y);
    		}
    		if (doc.caretPositionFromPoint) {
    			var pos = doc.caretPositionFromPoint(x, y);
    			return create(pos.offsetNode, pos.offset);
    		}
    		if (doc.elementFromPoint) {
    			return fromPointIE(x, y, doc);
    		}
    		throw 'fromPoint() unimplemented for this browser';
    	}

    Ou peut-être qu'il faut faire sa propre fonction ? Comment font les développeurs en général ?

    ---> Voilà en fait pourquoi je pose la question, c'est pour savoir quoi faire parmi les différents choix possibles...

    -----------------------------
    Exemple d'usage : comment connaitre la position du curseur texte (caret) correspondant à la position de la souris ?

    C'est vrai que c'est possible par calcul : on en revient à tes postes sur la longueur d'un texte...
    C'est plus facile avec les polices où tous les caractères ont la même largeur...

    Sinon bah c'est plus long, je pense qu'il faut calculer la longueur caractère par caractère jusqu’à que cela corresponde à la position de la souris...

    C'est un peu dommage alors que la fonction existe...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    La réponse c'est que tu ne peux l'utiliser que pour un navigateur pour lequel il est implémenté, rein de plus rien de moins.
    Il faudra donc protéger le code pour les autres navigateur au moyen d'un test sur la fonctionnalité...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  5. #5
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Merci. Mais pour la première ils disent bien "...et son comportement peut être modifié dans le futur. " donc même si elle implémentée par le navigateur elle peut encore être modifiée et donc poser problème mais je ne sais si c'est vrai ce genre d'infos...

    Bref je pense qu'il vaut mieux faire le teste en commençant par la deuxième fonction.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo