تريد محررة إرسال وصف بطاقة من صفحة إلى مساعد ليعيد صياغته. تشمل نسخة النص عبارة عن غرفة قديمة لا تظهر في البطاقة التي تقرؤها. هل رآها المستخدم أيضًا؟ نحدد العنصر الذي قرئ وطريقة أخذ نصه وحالة عرضه قبل نسبة كل الحروف المستخرجة إلى المحتوى الظاهر. المثال يصف صفحة مفترضة، ولا ينفذ استخراجًا في متصفح.
الخلاصة السريعة
النص المستخرج من عنصر لا يطابق دائمًا ما يظهر للقارئ. textContent يجمع نص المحتوى، بينما innerText يراعي العرض؛ لكن إذا كان العنصر نفسه غير معروض، فقد يعيد innerText قيمة textContent نفسها. [1][2]
- للعنصر الذي نراجعه، يجمع textContent نص الأبناء، مع استبعاد التعليقات وتعليمات المعالجة؛ وقد يشمل نص script وstyle والمحتوى المخفي. [1]
- في بطاقتنا المعروضة، «قاعة جديدة» ظاهرة و«غرفة قديمة» مخفية؛ النص الجامع قد يحوي العبارتين، فلا تنسبهما معًا لما قرأه الزائر.
- innerText يراعي النص المعروض، لكن العنصر غير المعروض أو المنفصل يعيد قيمة textContent نفسها؛ اسم الخاصية وحده لا يضمن الاقتصار على الظاهر. [2]
- احفظ نطاق العنصر وحالة العرض وطريقة الاستخراج، وراجع ما يصلح لإعادة الصياغة؛ وجود العبارة لا يثبت أنها معلومة حالية أو أن القارئ شاهدها.
ما الذي تجمعه الخاصية؟
تصف MDN textContent لعنصر بطاقتنا بأنه جمع نص الأبناء باستثناء التعليقات وتعليمات المعالجة؛ وتشمل قراءة المحتوى نص script وstyle، ولا تستبعد المخفي بحسب تنسيقه. [1]
نختار بطاقة وصف واحدة داخل صفحة مفترضة، بدل إرسال كل الصفحة دون تحديد النطاق. نعلن أن البطاقة تحوي عبارتين: «قاعة جديدة» في جزء ظاهر، و«غرفة قديمة» في جزء مخفي بتنسيق display:none. لا توجد في تصميم المثال عقد نصية أخرى نريد تفسيرها.
المحتوى الجامع ليس شهادة رؤية
في الحالة المعلنة قد تحتوي نسخة المحتوى النصي على «قاعة جديدة» و«غرفة قديمة» معًا. الجزء الثاني داخل البطاقة من جهة البنية، لكنه غير ظاهر في العرض الذي اشترطناه. وجوده في النسخة لا يثبت أن الزائر قرأه.
ولنفترض أن المساعد أعاد الصياغة إلى «يختار الزائر بين القاعة الجديدة والغرفة القديمة». استند إلى عبارتين في المدخل، لكنه حولهما إلى خيارين ظاهرين للقارئ بلا سند في المثال. نراجع أصل كل عبارة قبل اعتماد هذا الوصف.
كذلك لم نعلن لماذا بقيت العبارة المخفية: قد تكون نسخة قديمة أو نصًا يستعمله تصميم آخر. لا نستنتج السبب من الإخفاء وحده، ولا نقرر أن الغرفة موجودة أو متاحة من هذه الحروف.
احفظ استثناء العنصر غير المعروض
توثق MDN أن innerText يمثل النص المعروض؛ وإذا كان العنصر نفسه غير معروض، كالعنصر المنفصل أو المخفي، يعيد قيمة textContent نفسها. [2]
لهذا نفرق بين بطاقة ظاهرة فيها ابن مخفي، وبين أخذ عنصر مخفي كاملًا أو نسخة منفصلة من البطاقة. المثال الأول لا يبيح تعميم النتيجة على الثاني. تغيير حالة العنصر المقروء قد يغير ما تعيده الخاصية، حتى مع بقاء اسمها.
إذا قال تقرير الاستخراج «استعملنا innerText ولذلك كل النص شوهد»، فالسبب غير كافٍ دون تحديد حالة العنصر ونطاق القراءة. نكتب في السجل هذه الشروط إلى جانب القيمة المعادة، لا بعد أن تختلط بالتكملة التي كتبها المساعد.
اختر مادة إعادة الصياغة بوضوح
نقترح للمحررة قائمة تحقق قصيرة مرتبطة بمهمتها: ما البطاقة المقصودة، وما الجزء المعروض الذي تريد شرحه، وما النصوص الأخرى التي دخلت النسخة، وما الذي لم يعرف عن حالتها؟ ثم تصوغ مدخل المساعد بناء على ذلك.
لا ندعي أن إحدى الخاصيتين تقدم وصفًا كاملًا لكل ما يستطيع القارئ رؤيته أو فهمه في جميع الصفحات. هذا المقال يفسر عقد قراءة نص عنصر محدد، ولا يفحص صور الصفحة أو صحة معلوماتها. قبل نشر صياغة البطاقة، نقارن الجواب بالمادة المعتمدة، ونبقي سبب وجود النص المخفي غير معلوم إذا غاب دليله.
المصادر ومتابعة القراءة
- MDN Node.textContent (يفتح في نافذة جديدة)developer.mozilla.org
- MDN HTMLElement.innerText (يفتح في نافذة جديدة)developer.mozilla.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
