عندما نريد فتح رابط في نافذة جديدة، فإن الطريقة المعتادة هي إضافة target="_blank" بعد الرابط. لا توجد مشكلة عندما نستخدم DOCTYPE الانتقالي (xh tml1-transitional.dtd)، ولكن عندما نستخدمه. DOCTYPE الصارم (xhtml1- الصارم.dtd)، ستفشل هذه الطريقة في التحقق من W3C، وستظهر رسالة الخطأ التالية:
"لا يوجد هدف سمة لهذا العنصر (في إصدار HTML هذا)"
اتضح أنه بموجب DOCTYPE الصارم لـ HTML4.01/XHTML1.0/XHTML1.1، فإن target="_blank" وtarget="_self" وتركيبات الجملة الأخرى غير صالحة، ولا يمكننا تنفيذها إلا من خلال JavaScript.
سأل أحد الأصدقاء لماذا لا يُسمح باستخدام الهدف = "_ فارغ"؟ هذه السمة مريحة للغاية. هاها، لا أعرف ما يعتقده خبراء W3C، بقدر ما أعرف، يتعلق الأمر بشكل أساسي بـ "سهولة الاستخدام والود"، لأن الأجانب يعتقدون أنه من غير المهذب فتح نافذة جديدة دون موافقة المستخدم أو مطالبات واضحة. ل. وبغض النظر عما إذا كان هذا الإلغاء معقولا أم لا، فلننظر إلى الحل.
سمة rel
يضيف HTML4.0 سمة جديدة: rel. يتم استخدام هذه السمة لوصف العلاقة بين الرابط والصفحة التي تحتوي على الرابط، بالإضافة إلى هدف الارتباط. يحتوي rel على العديد من قيم السمات، مثل التالي والسابق والفصل والقسم وما إلى ذلك. ما نريد استخدامه هو السمة rel = "externa l". تمت كتابة الكود الأصلي على النحو التالي:
<a href="document.html" target="_blank"> فتح نافذة جديدة</a>
الآن سيتم كتابتها هكذا:
<a href="document.html" rel="external">فتح نافذة جديدة</a>
هذه طريقة صارمة. بالطبع، يجب دمجها مع جافا سكريبت لتكون فعالة.
الكود الكامل JS لجافا سكريبت هو كما يلي:
وظيفة الروابط الخارجية () {
إذا عاد (!document.getElementsByTagName) ؛
مرساة var = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var مرساة = مرساة[i];
إذا (anchor.getAttribute("href") &&
مرساة.getAttribute("rel") == "خارجي")
مرساة.تارجيت = "_فارغة";
}
}
window.onload = روابط خارجية؛
يمكنك حفظه كملف .js (مثل External.js) واستدعائه من خلال طريقة الاتصال الخارجي:
<script type="text/javascript" src="external.js"></script>
هذا كل شيء.
أخيرًا، أود أن أضيف أن الهدف = "new" الذي يستخدمه موقع الويب الخاص بي مسموح به بموجب DOCTYPE الانتقالي، ولكنه لا يفي بالمعايير الصارمة. سأستخدم الوضع الصارم في المراجعة التالية وأغير كل الهدف = "جديد" إلى rel = "خارجي".