عندما أنقر على رابط يحتوي على مرساة (anchor) على سطح المكتب، ينزل المتصفح إلى ذلك الموقع. ومع ذلك، على الهاتف المحمول (أندرويد، فايرفوكس وكروم)، يتم إزالة المرساة من عنوان URL، لذا لا يحدث التمرير إلى ذلك الموقع.
ما أحاول القيام به:
لدينا وثيقة إرشادات وأسئلة شائعة طويلة تحتاج إلى ربط بالعناوين. نظرًا لأن Discourse يحذف معاملات id، فقد قمت بإنشاء مكون مظهر بسيط يستخدم سمات بيانات مخصصة في المستند المستهدف ويستمع إلى المراسي في عنوان URL للتمرير إلى العنصر ذي سمة البيانات المتطابقة.
يعمل ذلك على سطح المكتب!
ومع ذلك، على الهاتف المحمول، يبدو أن المراسي تُزال، بحيث عند الوصول إلى الصفحة المستهدفة لا يحدث التمرير إلى العنصر الصحيح. وبطبيعة الحال، مع وثيقة طويلة، فإن الهاتف المحمول هو المكان الذي تحتاج فيه إلى هذا التنقل أكثر من أي وقت مضى.
الآن، أجد أن المراسي التي ينشئها مكون فهرس المحتويات تعمل عند فتحها في رابط جديد. لا يتم إزالتها من عنوان URL وينزل المتصفح إلى المكان الصحيح.
لا أستخدم أندرويد، لذلك لا يمكنني اختبار هذا، لكنني استخدمت الارتباط بالعناوين العديد من مرات، وتعمل بشكل جيد على آيفون الخاص بي. أنا فضولي لمعرفة سبب استخدامك لمراسي المعرف (id anchors) بدلاً من الارتباط المباشر بالعنوان الذي تريده؟
ترى -13 في النهاية؟ إنه موجود لأنه العنوان الثالث عشر. بمجرد إضافة عنوان جديد في بداية المستند، ينكسر الرابط. وبطبيعة الحال، إذا قمت بتغيير نص العنوان، ينكسر أيضًا.
عندما أقول “ينكسر”، أعني التغييرات في المستند الهدف. ومن ما أستطيع استنتاجه، يتم إنشاء هذه الروابط المرساة ديناميكيًا عند تحميل الصفحة. لذا إذا كنت تستخدم إضافة فهرس المحتويات (TOC)، فإن تغيير المستند لا يمثل مشكلة.
في حالتنا الاستخدامية، هذا دليل الأسئلة الشائعة (FAQ) الذي يتم وضع رابط له. لذلك، من الشائع إضافة أسئلة/عناوين جديدة.
لكنك على حق في أن Discourse يبدو أنه يكشف عن نمط هذه الروابط المرساة ويسمح بمرورها. ولكن إذا لم يتطابق مع النمط المتوقع، فإنه يتم إزالته.
إنها مجرد معرفات أبجدية رقمية عادية. لذا إذا كنت أحاول إنشاء مرساة لأمثلة أعلاه، سأستخدم فقط cloudflare-r2.