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

من موسوعة حسوب
إضافة الصّفحة
 
لا ملخص تعديل
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 2: سطر 2:
'''تنبيه:''' هذه تقنيّة تجريبيّة، انظر جدول دعم المتصفّحات قبل استخدام هذا التّابع في شيفرة إنتاجيّة.
'''تنبيه:''' هذه تقنيّة تجريبيّة، انظر جدول دعم المتصفّحات قبل استخدام هذا التّابع في شيفرة إنتاجيّة.


يعيد التّابع <code>Document.getSelection‎()‎</code> كائنًا من النّوع <code>Selection</code> يمثّل مجال النّص المظلَّل من طرف المستخدم، أو موقع علامة الإقحام (caret) حاليًّا.
يعيد التّابع <code>Document.getSelection‎()‎</code> كائنًا من النّوع <code>[[JavaScript/Selection|Selection]]</code> يمثّل مجال النّص المظلَّل من طرف المستخدم، أو موقع علامة الإقحام (caret) حاليًّا.


==البنية العامة==
==البنية العامة==
سطر 27: سطر 27:
عند تمرير كائن إلى دالّة تتوقَّع سلسلةً نصيّة في لغة JavaScript (مثل <code>window.alert()‎</code>)، فإنّ تابع <code>toString()‎</code> الخاصّ بالكائن يُستدعَى وتُمرّر القيمة المعادة إلى الدّالة. هذا يجعل الكائن يبدو كسلسةٍ نصيّة، لكنّه في الواقع كائن ذو توابع وخاصيّات مختلفة.
عند تمرير كائن إلى دالّة تتوقَّع سلسلةً نصيّة في لغة JavaScript (مثل <code>window.alert()‎</code>)، فإنّ تابع <code>toString()‎</code> الخاصّ بالكائن يُستدعَى وتُمرّر القيمة المعادة إلى الدّالة. هذا يجعل الكائن يبدو كسلسةٍ نصيّة، لكنّه في الواقع كائن ذو توابع وخاصيّات مختلفة.


في المثال أعلاه، يُستدعى التّابع  <code>selObj.toString‎()‎</code> تلقائيًّا عندما يتمّ تمرير الكائن إلى التّابع <code>window.alert()‎</code>. لكنّ محاولة استخدام تابعٍ أو خاصيّة للتعامل مع الكائن <code>Selection</code> مباشرةً كما يُتَعامل مع السّلاسل النّصيّة من النّوع String في JavaScript مثل <code>length‎</code> أو <code>substr</code> ستُنتِج (أي المحاولة) خطأً إن لم يكن الكائن يمتلك الخاصيّة أو التّابعَ المُراد استدعاؤه أو قد يُعيد نتائج غير متوقّعة إن كان التّابع موجودا. لاستخدام الكائن <code>Selection</code> كسلسلة نصيّة، استدعِ التّابع <code>toString‎()‎</code> على الكائن مُباشرةً كما يلي:
في المثال أعلاه، يُستدعى التّابع  <code>selObj.toString‎()‎</code> تلقائيًّا عندما يتمّ تمرير الكائن إلى التّابع <code>window.alert()‎</code>. لكنّ محاولة استخدام تابعٍ أو خاصيّة للتعامل مع الكائن <code>Selection</code> مباشرةً كما يُتَعامل مع السّلاسل النّصيّة من النّوع <code>[[JavaScript/String|String]]</code> في JavaScript مثل <code>[[JavaScript/String/length|length‎]]</code> أو <code>[[JavaScript/String/substr|substr]]</code> ستُنتِج (أي المحاولة) خطأً إن لم يكن الكائن يمتلك الخاصيّة أو التّابعَ المُراد استدعاؤه أو قد يُعيد نتائج غير متوقّعة إن كان التّابع موجودًا. لاستخدام الكائن <code>Selection</code> كسلسلة نصيّة، استدعِ التّابع <code>toString‎()‎</code> على الكائن مُباشرةً كما يلي:
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
var selectedText = selObj.toString();
var selectedText = selObj.toString();
سطر 35: سطر 35:
* <code>selectedText‎</code> سلسلة نصيّة (تحتوي النّص المظلّل).
* <code>selectedText‎</code> سلسلة نصيّة (تحتوي النّص المظلّل).
===الكائنات ذات الصلة===
===الكائنات ذات الصلة===
تُوفّر نماذج الإدخال في HTML واجهات برمجيّة أكثر بساطة للتّعامل مع النّصوص المظلَّلة (انظر <code>HTMLInputElement.setSelectionRange‎()‎</code>).
تُوفّر نماذج الإدخال في HTML واجهات برمجيّة أكثر بساطة للتّعامل مع النّصوص المظلَّلة (انظر <code>[[JavaScript/HTMLInputElement/setSelectionRange|HTMLInputElement.setSelectionRange‎()‎]]</code>).


لاحظ أنّ هناك فرقًا بين التّظليل والتّركيز على النّص. يُعيد التّابع <code>Document.activeElement‎()‎</code> العنصر المُركّز عليه.
لاحظ أنّ هناك فرقًا بين التّظليل والتّركيز على النّص. يُعيد التّابع <code>[[JavaScript/Document/activeElement|Document.activeElement‎()‎]]</code> العنصر المُركّز عليه.


==دعم المتصفّحات==
==دعم المتصفّحات==
سطر 58: سطر 58:


==مصادر ومواصفات==
==مصادر ومواصفات==
* مواصفة [https://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin Shadow DOM]
* مواصفة [https://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin Shadow DOM].


[[تصنيف:JavaScript]]
[[تصنيف:JavaScript]]

المراجعة الحالية بتاريخ 01:58، 2 أبريل 2018

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

يعيد التّابع Document.getSelection‎()‎ كائنًا من النّوع Selection يمثّل مجال النّص المظلَّل من طرف المستخدم، أو موقع علامة الإقحام (caret) حاليًّا.

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

var selection = documentOrShadowRootInstance.getSelection()

المعاملات

لا توجد مُعاملات.

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

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

مثال

function foo() {
    var selObj = document.getSelection(); 
    alert(selObj);
    var selRange = selObj.getRangeAt(0);
    // نفّذ عمليّة ما بعد الحصول على مجال النّص المظلَّل
}

ملاحظات

تمثيل الكائن Selection على شكل سلسلة نصيّة

عند تمرير كائن إلى دالّة تتوقَّع سلسلةً نصيّة في لغة JavaScript (مثل window.alert()‎)، فإنّ تابع toString()‎ الخاصّ بالكائن يُستدعَى وتُمرّر القيمة المعادة إلى الدّالة. هذا يجعل الكائن يبدو كسلسةٍ نصيّة، لكنّه في الواقع كائن ذو توابع وخاصيّات مختلفة.

في المثال أعلاه، يُستدعى التّابع selObj.toString‎()‎ تلقائيًّا عندما يتمّ تمرير الكائن إلى التّابع window.alert()‎. لكنّ محاولة استخدام تابعٍ أو خاصيّة للتعامل مع الكائن Selection مباشرةً كما يُتَعامل مع السّلاسل النّصيّة من النّوع String في JavaScript مثل length‎ أو substr ستُنتِج (أي المحاولة) خطأً إن لم يكن الكائن يمتلك الخاصيّة أو التّابعَ المُراد استدعاؤه أو قد يُعيد نتائج غير متوقّعة إن كان التّابع موجودًا. لاستخدام الكائن Selection كسلسلة نصيّة، استدعِ التّابع toString‎()‎ على الكائن مُباشرةً كما يلي:

var selectedText = selObj.toString();

بحيث:

  • selObj هو الكائن من النّوع Selection.
  • selectedText‎ سلسلة نصيّة (تحتوي النّص المظلّل).

الكائنات ذات الصلة

تُوفّر نماذج الإدخال في HTML واجهات برمجيّة أكثر بساطة للتّعامل مع النّصوص المظلَّلة (انظر HTMLInputElement.setSelectionRange‎()‎).

لاحظ أنّ هناك فرقًا بين التّظليل والتّركيز على النّص. يُعيد التّابع Document.activeElement‎()‎ العنصر المُركّز عليه.

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

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

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