--- title: Document.caretRangeFromPoint() slug: Web/API/Document/caretRangeFromPoint tags: - API - DOM - Document - Insertion - Méthode translation_of: Web/API/Document/caretRangeFromPoint ---
{{APIRef("DOM")}}{{Non-standard_header}}
La méthode caretRangeFromPoint()
de l'interface {{domxref("Document")}} renvoie un objet "Range" (chaîne) pour le fragment de document aux coordonnées spécifiées.
var range = document.caretRangeFromPoint(float x, float y);
Une des réponses suivantes :
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.Démonstration de base : lorsque vous cliquez dans un paragraphe, insérez un saut de ligne à la position du curseur :
<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>
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); }
{{ EmbedLiveSample('Example', '', '', '', 'Web/API/Document/caretRangeFromPoint') }}
{{Compat("api.Document.caretRangeFromPoint")}}