يسجل تتبع التمرير موضعًا وصل إليه المستخدم في الصفحة. لا يثبت القراءة أو الفهم أو الانتباه. يجب تحديد العتبة والنطاق المقاس ومقام النسبة.
القياس التلقائي والعتبات الخاصة
يطلق القياس المحسن في GA4 حدث scroll عندما يصبح عمق 90% الرأسي مرئيًا لأول مرة. لا يوفر تلقائيًا عتبات 25% و50% و75%. تتطلب العتبات الخاصة قياسًا منفصلًا وإزالة التكرار. تُوثق تغيرات الارتفاع والتحميل المؤجل والتنقل الديناميكي.
التفسير بحسب المهمة
قد يبلغ التمرير السريع أو رابط المرساة أسفل الصفحة دون قراءة متصلة. وقد تكون الإجابة في الأعلى. قارن بنى متشابهة واربط الإشارة بإنجاز المهمة والأخطاء والتعليقات. الأحداث ومشاهدات الصفحات والمستخدمون وحدات مختلفة.
تحديد نطاق الجمع
في فرنسا تصف CNIL استثناءات من الموافقة لبعض متتبعات الجمهور بشروط صارمة. الإعلام أو تجميع النتائج لا يثبت الاستثناء وحده. وثّق الأغراض والوصول والاحتفاظ؛ الزيارات غير المقاسة ليست ملاحظات سلبية.
مثال خيالي: نسبة داخل النطاق المقاس فقط
| العنصر | القيمة | التفسير |
|---|---|---|
| مشاهدات الصفحات المقاسة | 100 | النطاق المؤهل والمجهز للقياس فقط. |
| المشاهدات التي بلغت 90% | 60 | عدّ دون تكرار لكل مشاهدة صفحة. |
| النسبة في هذا النطاق | 60 / 100 = 60% | ليست مستخدمين فريدين أو معدل قراءة. |
المصادر
- Google Analytics · Enhanced measurement events
- Google Analytics · Sessions and user engagement
- CNIL · Cookies et autres traceurs · FAQ
المراجعة التحريرية: 1 نوفمبر 2026.
عمق التمرير هو مدى الاطلاع، وليس الفهم.
الوصول إلى عمق معين في الصفحة لا يدل على الانتباه أو الفهم. تكون الإشارة أكثر فائدة عند ربطها بطول المحتوى، والوقت المتاح، والإجراء اللاحق.
- حدد ما إذا كان الحد ينطبق على المستند بأكمله أم على جزء مرئي منه.
- اختبر الصفحات القصيرة، وبطء التحميل، والهواتف المحمولة، والزيارات المتكررة.
- اعرض الإشارة كمؤشر لمسار المستخدم، وليس كدليل على اكتمال القراءة.
المصدر الأساسي: Google Analytics — Set up events. المنهج المرتبط: اقرأ الدليل العملي.
سلامة ربط البيانات
قد يضاعف الربط الصفوف ويشوّه المجاميع.
- يمثل صف الطلبات طلباً، ويمثل صف البنود منتجاً في ذلك الطلب. افحص المفاتيح المكررة والفارغة قبل دمج الجداول.
- جمّع البنود حسب معرّف الطلب. يمنع الربط بهذه النتيجة تكرار مبلغ الطلب لكل منتج. قارن المجموع بجدول الطلبات الأصلي.
- يحافظ LEFT JOIN على الطلبات بلا بنود، لكن شرط WHERE على الجدول الأيمن قد يحذفها. غياب المطابقة لا يعني مبلغاً صفرياً.
حالة قبول قابلة للتكرار
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
عرض بيانات الحالة
{
"orders": [
{
"id": 1,
"total": 100
},
{
"id": 2,
"total": 200
}
],
"line_order_ids": [
1,
1,
2
],
"sum_before": 300,
"sum_after_raw_join": 400
}القرار المتوقع
المجموع 400 يحتسب طلباً مرتين. جمّع البنود حسب الطلب لاستعادة 300. اختبر أيضاً طلبين افتراضيين بقيمة 100 لكل منهما؛ المجموع 200. تعيد SUM(DISTINCT total) القيمة 100 فتحذف قيمة صحيحة. افحص المعرّفات وتعدد علاقات الربط بدلاً من إزالة المبالغ المتكررة.
استعلامات SQL قابلة لإعادة التنفيذ
مثال افتراضي: طلبان بمبلغي 100 و200 وثلاثة بنود للطلبات 1 و1 و2. تستخدم الاستعلامات VALUES فقط؛ نفّذها في بيئة اختبار.
WITH orders(id, total) AS (VALUES (1, 100), (2, 200)),
lines(order_id) AS (VALUES (1), (1), (2))
SELECT COUNT(*) AS rows, SUM(o.total) AS total
FROM orders o JOIN lines l ON l.order_id = o.id;WITH orders(id, total) AS (VALUES (1, 100), (2, 200)),
lines(order_id) AS (VALUES (1), (1), (2)),
per_order AS (
SELECT order_id, COUNT(*) AS line_count
FROM lines GROUP BY order_id
)
SELECT COUNT(*) AS orders, SUM(o.total) AS total
FROM orders o LEFT JOIN per_order l ON l.order_id = o.id;ينتج الربط المباشر ثلاثة صفوف ومجموعاً 400. يعيد التجميع المسبق طلبين ومجموعاً 300.
WITH orders(id, total) AS (VALUES (1, 100), (2, 100))
SELECT SUM(total) AS correct_total,
SUM(DISTINCT total) AS distinct_total
FROM orders;مع مبلغي 100 و100، المجموع الصحيح 200؛ يعيد SUM(DISTINCT total) القيمة 100.
إجراء التحقق
- حدد مستوى تفصيل الطلبات والبنود.
- اربط طلباً له بندان.
- احتفظ بالمفاتيح والأعداد والمجاميع المطابقة.
هل يكفي SUM(DISTINCT total)؟
لا. طلبان بمبلغ 100 لكل منهما مجموعهما 200، لكن SUM(DISTINCT total) يعيد 100. أصلح علاقة المفاتيح بدلاً من حذف المبالغ المتساوية.
المصدر الأساسي: PostgreSQL — Table expressions and joins. المنهج المرتبط: اقرأ الدليل العملي.
جداول بيانات ميسّرة
يجب أن تبقى علاقات الخلايا مفهومة على الهاتف.
- استخدم caption لتسمية الجدول وth للعناوين. في جدول بسيط يوضّح scope="row" وscope="col" الاتجاه؛ أبقِ الوحدة والفترة مع القيم.
- اجعل منطقة التمرير الأفقي قابلة للوصول بلوحة المفاتيح وأتح كل الأعمدة. عند تحويل الصفوف إلى بطاقات كرّر التسميات والوحدات دون حذف معلومات المقارنة.
- اطلب تحديد خلية وصف وعمود ووحدة بلوحة المفاتيح وقارئ الشاشة. كرّر بعد الفرز والتصفية؛ المظهر الصحيح لا يؤكد العلاقات المعلنة صوتياً.
حالة قبول قابلة للتكرار
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
عرض بيانات الحالة
{
"column_headers": [
"2025",
"2026"
],
"row_headers": [
"A",
"B"
],
"cell": {
"row": "B",
"column": "2026",
"value": 42
},
"layout": "mobile"
}القرار المتوقع
يجب أن تبقى القيمة 42 مرتبطة بـ B و2026 حتى في عرض الهاتف.
إجراء التحقق
- حدد رؤوس الصفوف والأعمدة والوحدات.
- اقرأ خلية بلوحة المفاتيح وتقنية مساعدة.
- احفظ السياق بعد عرض الهاتف والتكبير. في الخلية الحاسمة، استعد سياق الصف والعمود والوحدة بعد التمرير؛ فقد تتغير دلالة قيمة مقروءة بلا عنوانها.
المصدر الأساسي: W3C WAI — Tables tutorial. المنهج المرتبط: اقرأ الدليل العملي.
