الخلاصة

  • كان رابط target="_blank" يمنح الصفحة الجديدة علاقة opener تعود بها إلى علامة التبويب الأصلية.
  • جعلت مبادرة 2018 وتعديل HTML عام 2019 الانفصال هو السلوك الافتراضي، مع rel="opener" لطلب الصلة عمداً.

تنقر رابطاً فتظهر صفحة في علامة تبويب جديدة. تبقى القديمة في الخلف وكأن الباب أغلق. كان المتصفح يمنح الصفحة الجديدة مقبضاً اسمه window.opener يصل إلى الصفحة التي فتحتها. وبذلك تستطيع الوجهة أن تجعل علامة التبويب الأصلية تنتقل إلى عنوان آخر. شاشتان منفصلتان في العين، وخيط واحد في البنية الخفية.

عرض نقاش WHATWG المفتوح في 10 أكتوبر 2018 هذا الوضع بوضوح. قال Chris Dumez إن target="_blank" كان يترك علاقة opener ما لم يكتب الناشر rel="noopener". واقترح قلب البداية: تُفتح الصفحة الجديدة منفصلة، ومن يحتاج تعاون النافذتين يطلب rel="opener". كانت ميزة التنسيق بين صفحات متعاونة ترافق أيضاً الروابط العادية إلى وجهات لا يعرفها الناشر.

في اليوم التالي سجل تقرير WebKit تجربة معاملة روابط _blank كما لو حملت noopener، مع إبقاء opener طريقاً لطلب الاتصال. لم يتغير مشهد النقر كثيراً؛ تغير الخيط غير المرئي. لم يعد كل محرر مضطراً إلى تذكر كلمة حماية عند كل رابط يخرج من موقعه.

أدخل تعديل WHATWG المدمج في 7 فبراير 2019 الفكرة في HTML. تفحص قواعد الروابط الحالية noopener وnoreferrer أولاً، ثم تفصل _blank أيضاً حين يغيب opener. أصبح rel="opener" تصريحاً واضحاً بالرغبة في إبقاء الصلة. ما زال القارئ يرى صفحة جديدة؛ الاختلاف في قدرة تلك الصفحة على العودة إلى الصفحة الأولى.

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

عبارة «علامة تبويب جديدة» تصف الشكل المرئي فقط. العلاقة بين الصفحتين يحددها المتصفح وفق قواعد أدق. بدأ السؤال عام 2018، واختُبر في WebKit، ودخل المعيار عام 2019. لقد تغيرت سلطة صغيرة مختبئة في نقرة يومية: الخيط الذي كان يُربط تلقائياً صار يحتاج إلى يد تعقده عمداً.