في الآونة الأخيرة، توقفت جميع الروابط الخارجية في منتداي عن الفتح في تبويب جديد. لقد تحققت مرة أخرى من خيار “افتح الروابط الخارجية في تبويب جديد افتراضيًا” وهو محدد:
هل يمكنك اختبار ذلك هنا على ميتا؟ اضبط تفضيلاتك هنا لفتح الروابط الخارجية في علامة تبويب جديدة، وانظر ما إذا كان ذلك يعمل بالنسبة لك. إنه يعمل بشكل جيد للغاية بالنسبة لي.
تُعدّ فحص عنصر DOM مباشرةً باستخدام وحدة تحكم مطوري الويب من أفضل خطوات استكشاف الأخطاء وإصلاحها التي يمكنك اتخاذها في البداية؛ حيث يمكنك من خلالها فحص السمات الدقيقة للرابط الخاص بك، وتحديدًا سمة “target”.
في كثير من الأحيان، لا يمكنك رؤية سمات DOM هذه بمجرد قراءة كود المصدر (فقد توجد هذه السمات في DOM ولكنها غير موجودة في كود المصدر)، وبالتالي ستحتاج إلى استعلام DOM للحصول على السمات (للتأكد بنسبة 100%).
يمكن أن تختلف سمات الـ DOM (وغالبًا ما تختلف) عن كود المصدر؛ خاصةً في المواقع التي تستخدم الكثير من جافا سكريبت للتلاعب بالـ DOM (مثل Discourse).
لهذا السبب ذكرت تحديدًا ضرورة استعلام الـ DOM وعدم الاكتفاء بالنظر إلى كود المصدر
ومع ذلك، أوافقك الرأي يا @osioke، حيث يُظهر كود المصدر بوضوح غياب سمة الهدف؛ ولكن عند فحص الـ DOM، سنكون على “يقين” بشأن السمة؛ لأن الـ DOM قد يكون في حالة مختلفة عن كود المصدر (وغالبًا ما يكون كذلك).
شخصيًا، أنا معجب كبير بمبدأ “عدم افتراض أي شيء”، وهذا هو السبب في أنني اقترحت على @riteshsaini “التأكد” من خلال فحص الـ DOM ثم “المضي قدمًا” من هناك.
من الممكن جدًا أن تكون سمات الهدف في الروابط ضمن الـ DOM وكود المصدر في نفس الحالة؛ لكنني دائمًا أنصح الأشخاص الذين يستكشفون المشاكل بعدم افتراض مثل هذه التفاصيل؛ ومن هنا جاءت اقتراحي باستعلام الـ DOM كخطوة في عملية استكشاف الأخطاء وإصلاحها.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// فتح الروابط الخارجية تلقائيًا في علامة تبويب أو نافذة جديدة
var pc = 1;
if ($("html").hasClass("mobile-device")) pc = 0;
var links = document.links;
for (var i = 0, linksLength = links.length; i < linksLength; i++) {
if (links[i].hostname != window.location.hostname) {
if (pc) links[i].target = '_blank'; else links[i].target = '_self';
}
}
});
</script>
… ويوضح ذلك بشكل مثالي في مثال قوي على واجهة برمجة تطبيقات Discourse كيف سيكون DOM ورمز المصدر في حالة مختلفة، ولن ترى سمات الهدف في كود HTML الذي تم تعيينه بواسطة JavaScript أعلاه
هل تفحصت الإعدادات في ملفك الشخصي تحت preferences/interface؟ لأن هذا الوضع يحدث عادةً عندما يكون فتح الروابط الخارجية في علامات تبويب جديدة معطلاً في ملفك الشخصي.
لم تكن الخيار مُفعّلًا، لذا قمت بتفعيله. الآن تفتح الروابط في تبويب جديد فقط عندما أكون مسجّل الدخول. إذا فتحت الموقع في تبويب التصفح المتخفي، فلا يزال الأمر لا يعمل.
بالنسبة للمنتديات الخاصة بالمشاركة والتنزيل باستخدام روابط من Bitly أو مواقع أخرى (أقل أمانًا)،
هل تفكر في استخدام rel="noopener noreferrer" بدلاً من rel="nofollow"؟
يمكنك معرفة المزيد عن noopener noreferrer.
يمكنني النظر في إضافة noopener noreferrer، لكني سأظل بحاجة إلى إضافة nofollow معها. والسبب هو أنني لا أريد من Google متابعة أو فهرسة هذه الروابط لأنها روابط تابعة. فقط nofollow يمكنه المساعدة في ذلك.