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.caretPositi
textNode = range.offset
offset = range.offset;
} else if (document.caretRangeFromPo
range = document.caretRange
offset = range.startOffset;
}
// divise seulement les TEXT_NODE (noeuds
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
BCD tables only load in the browser