Document.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.

 

La méthode caretRangeFromPoint() de l'interface Document renvoie un objet "Range" (chaîne) pour le fragment de document aux coordonnées spécifiées.

Syntaxe

var range = document.caretRangeFromPoint(float x, float y);

Retourne

Une des réponses suivantes :

  • Un Range.
  • Null si x ou y sont négatifs, hors de la fenêtre, ou s'il n'y a pas de noeud d'entrée de texte.

Paramètres

x
Une position horizontale dans la fenêtre courante.
y
Une position verticale dans la fenêtre courante.

Exemple

Démonstration de base : lorsque vous cliquez dans un paragraphe, insérez un saut de ligne à la position du curseur :

Contenu HTML

<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>

Contenu JavaScript

function insertBreakAtPoint(e) {

    var range;
    var textNode;
    var offset;

    if (document.caretPositionFromPoint) {
        range = document.caretPositionFromPoint(e.clientX, e.clientY);
        textNode = range.offsetNode;
        offset = range.offset;
        
    } else if (document.caretRangeFromPoint) {
        range = document.caretRangeFromPoint(e.clientX, e.clientY);
        textNode = range.startContainer;
        offset = range.startOffset;
    }

    // divise seulement les TEXT_NODE (noeuds texte)
    if (textNode && textNode.nodeType == 3) {
        var replacement = textNode.splitText(offset);
        var br = document.createElement('br');
        textNode.parentNode.insertBefore(br, replacement);
    }
}

var paragraphs = document.getElementsByTagName("p");
for (i=0 ; i < paragraphs.length; i++) {
    paragraphs[i].addEventListener("click", insertBreakAtPoint, false);
}

 

Compatibilité des navigateurs

Nous convertissons les données de compatibilité dans un format JSON. Ce tableau de compatibilité utilise encore l'ancien format car nous n'avons pas encore converti les données qu'il contient. Vous pouvez nous aider en contribuant !

  
Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari (WebKit)
Basic support 43.0 20+ Pas de support 12 15+ (Oui)
     
Fonctionnalité Android Chrome for Android Edge Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
Basic support Pas de support 43.0 ? ? ? ? ? ?

 

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : loella16
Dernière mise à jour par : loella16,