الفرق بين المراجعتين لصفحة: «JavaScript/Document/caretPositionFromPoint»

من موسوعة حسوب
ط نقل عبد-الهادي-الديوري صفحة JavaScript/Document/elementsFromPoint إلى JavaScript/Document/caretPositionFromPoint: أخطأت في إنشاء الصّفحة
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 21: سطر 21:
==مثال==
==مثال==
يقوم المثال التّالي بإدخال فراغ سطريً (line break) أينما ضغطت.
يقوم المثال التّالي بإدخال فراغ سطريً (line break) أينما ضغطت.
جزء HTML:
جزء HTML:
<syntaxhighlight lang="html">
<syntaxhighlight lang="html">

المراجعة الحالية بتاريخ 18:50، 1 أبريل 2018

تنبيه: هذه تقنيّة تجريبيّة، انظر جدول دعم المتصفّحات قبل استخدام هذا التّابع في شيفرة إنتاجيّة.

يعيد التّابع Document.caretPositionFromPoint‎()‎ كائنًا من النّوع CaretPosition يحتوي على عقدة DOM ومكان علامة الإقحام (caret) وحدود محارف (character offset) العلامة داخل هذه العقدة.

البنية العامة

var caretPosition = document.caretPositionFromPoint(float x, float y);

المعاملات

x

الإحداثيّ الأفقيّ لنقطة ما.

y

الإحداثيّ العمودي لنقطة ما.

القيمة المعادة

كائن من النّوع CaretPosition.

مثال

يقوم المثال التّالي بإدخال فراغ سطريً (line break) أينما ضغطت.

جزء 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>

جزء 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;
  }

  // قسّم العقد النّصيّة فقط
  if (textNode.nodeType == 3) {
    var replacement = textNode.splitText(offset);
    var br = document.createElement('br');
    textNode.parentNode.insertBefore(br, replacement);
  }
}

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

دعم المتصفّحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 53 نعم نعم 40 نعم

مصادر ومواصفات