يتم إزالة الرموز/# والروابط المرساة من عناوين URLs على الهاتف المحمول. كيف يمكن إيقاف ذلك؟

عندما أنقر على رابط يحتوي على مرساة (Anchor) على سطح المكتب، فإن الصفحة تنزلق إلى هذا الموقع. ومع ذلك، على الأجهزة المحمولة (أندرويد، فايرفوكس وكروم)، يتم إزالة المرساة من عنوان URL، لذا لا يحدث أي انزلاق إلى هذا الموقع.

ما أحاول فعله:

لدينا وثيقة إرشادات وطرح الأسئلة الشائعة طويلة تحتاج إلى ربط بالعناوين. نظرًا لأن Discourse يزيل معاملات id، فقد قمت بإنشاء مكون قالب بسيط يستخدم سمات البيانات المخصصة في المستند المستهدف ويستمع إلى المراسي في عنوان URL للانزلاق إلى العنصر الذي يحتوي على سمة البيانات المطابقة.

يعمل على سطح المكتب!

ومع ذلك، على الأجهزة المحمولة، يبدو أن المراسي يتم إزالتها بحيث عندما تصل إلى الصفحة المستهدفة، لا يحدث أي انزلاق إلى العنصر الصحيح. وبالطبع، مع وثيقة طويلة، تكون الأجهزة المحمولة هي المكان الذي تحتاج فيه إلى هذا التنقل أكثر من أي وقت مضى.

الآن، أجد أن المراسي التي ينشئها مكون فهرس المحتويات تعمل عند فتحها في رابط جديد. فهي لا تزال موجودة في عنوان URL وينزلق المتصفح إلى المكان الصحيح.

كيف يمكنني جعل هذا يعمل؟

تحديث صغير…

اقترح شخص ما استخدام معلمات الاستعلام بدلاً من ذلك. لا يبدو أنها تُزال على الأجهزة المحمولة. ولكن بشكل مذهل، يتم إزالتها على سطح المكتب.

إليك بعض المنشورات ذات الصلة، على الرغم من أنها لا تتناول المشكلة المحددة المتعلقة بحذف الروابط…

لا أستخدم أندرويد، لذلك لا يمكنني اختبار هذا، لكنني استخدمت الارتباط بالعناوين العديد من مرات، وتعمل بشكل جيد على آيفون الخاص بي. أنا فضولي لمعرفة سبب استخدامك لمراسي المعرف (id anchors) بدلاً من الارتباط المباشر بالعنوان الذي تريده؟

على سبيل المثال، هل يعمل هذا بالنسبة لك؟ تكوين Cloudflare R2

هل يمكنك تقديم مثال لكيفية ظهور رابط المرساة الخاص بك؟ ربما أكون أفهم بشكل خاطئ ما تحاول إنجازه.

لأن روابط العناوين هذه هشة للغاية. هذا هو شكل الرابط الذي قدمته:

https://meta.discourse.org/t/-/148916#p-738234-cloudflare-r2-13

ترى -13 في النهاية؟ إنه موجود لأنه العنوان الثالث عشر. بمجرد إضافة عنوان جديد في بداية المستند، ينكسر الرابط. وبطبيعة الحال، إذا قمت بتغيير نص العنوان، ينكسر أيضًا.

عندما أقول “ينكسر”، أعني التغييرات في المستند الهدف. ومن ما أستطيع استنتاجه، يتم إنشاء هذه الروابط المرساة ديناميكيًا عند تحميل الصفحة. لذا إذا كنت تستخدم إضافة فهرس المحتويات (TOC)، فإن تغيير المستند لا يمثل مشكلة.

في حالتنا الاستخدامية، هذا دليل الأسئلة الشائعة (FAQ) الذي يتم وضع رابط له. لذلك، من الشائع إضافة أسئلة/عناوين جديدة.

لكنك على حق في أن Discourse يبدو أنه يكشف عن نمط هذه الروابط المرساة ويسمح بمرورها. ولكن إذا لم يتطابق مع النمط المتوقع، فإنه يتم إزالته.

إنها مجرد معرفات أبجدية رقمية عادية. لذا إذا كنت أحاول إنشاء مرساة لأمثلة أعلاه، سأستخدم فقط cloudflare-r2.

هل تعمل فكرة مماثلة لهذا عندك؟

<a name="cloudflare-r2"></a>
## تكوين Cloudflare R2

يُحافظ هذا على فصل الرابط الداخلي عن العنوان، ويمكنك إضافة #cloudflare-r2 إلى نهاية عنوان URL للربط به.

في اختباراتي، يقوم معالج Markdown بإزالة سمات name. هذا هو سبب مشكلتي الأولى.

ومع ذلك، فإن المشكلة التي أثارها في هذا الموضوع هي أنه حتى لو تمكنت من جعل ذلك الرابط يعمل، فإن #cloudflare-r2 يتم إزالته على الأجهزة المحمولة. ولا يحدث ذلك على سطح المكتب.

أه فهمت، نعم يبدو أن محرر النصوص الغني يزيل تلك العناصر، لكن محرر Markdown لا يفعل ذلك… في المحرر الغني أعتقد أنه يجب عليك تغليفها داخل عنصر div للحفاظ على كود HTML

 <div><a name="x"></a></div>

لقد جربت ذلك. لا يزال يتم إزالته. أيضًا، لا يمكنني الاعتماد على شخص ما في المستقبل لعدم استخدام محرر Markdown.

لقد وضعت ذلك HTML أعلاه في محرر النص الغني للاختبار. لنرَ…

حسنًا! يبدو أن هذا يعمل في الحالتين! بل في كلا المحررين.

أحتاج إلى إجراء المزيد من الاختبارات، خاصةً على الأجهزة المحمولة. سأستمر في العمل على هذا وسأعود بالنتائج.

شكرًا لك!