گاهی اوقات لازم است فقط لینکهای مربوط به چند دامنه مشخص در تب جدید مرورگر باز شوند، در حالی که سایر لینکها مانند حالت عادی در همان تب باز شوند.
این روش برای مواردی مانند زیر بسیار کاربردی است:
کد JavaScript
این روش برای مواردی مانند زیر بسیار کاربردی است:
- سرور دانلود روی یک دامنه مجزا
- لینک کوتاهکننده
- ابزارهای اختصاصی مانند رزومهساز
- هر سرویس دیگری که متعلق به انجمن یا وبسایت شما باشد
کد JavaScript
JavaScript:
<script>
document.addEventListener("DOMContentLoaded", function() {
// Add the domains that should open in a new tab
const externalDomains = [
"example.com",
"downloads.example.com",
"tools.example.com",
"go.example.com"
];
document.querySelectorAll('a[href^="http"]').forEach(link => {
try {
const linkHost = new URL(link.href).hostname.replace('www.', '');
if (externalDomains.includes(linkHost)) {
link.setAttribute('target', '_blank');
link.setAttribute('rel', 'noopener noreferrer');
}
} catch (e) {
// Ignore invalid URLs
}
});
});
</script>
نحوه عملکرد
- تمام لینکهای HTTP و HTTPS صفحه بررسی میشوند.
- دامنه هر لینک با لیست دامنههای مشخصشده مقایسه میشود.
- در صورت تطابق، لینک در یک تب جدید باز خواهد شد.
- سایر لینکها بدون هیچ تغییری رفتار پیشفرض خود را حفظ میکنند.
شخصیسازی
فقط کافی است آرایه externalDomains را با دامنههای موردنظر خود ویرایش کنید:
JavaScript:
const externalDomains = [
"example.com",
"downloads.example.com",
"tools.example.com",
"another-domain.com"
];
نحوه نصب
کد را در بخشی از XenForo قرار دهید که JavaScript در تمام صفحات بارگذاری میشود؛ مانند Footer Template یا هر Template سراسری دیگری که برای اجرای کدهای JavaScript استفاده میکنید.نکات
- نیازی به CSS نیست.
- نیازی به نصب افزونه یا تغییرات اضافی در XenForo نیست.
- برای افزایش امنیت، از rel="noopener noreferrer" استفاده شده است.
- اگر از چند زیردامنه (Subdomain) استفاده میکنید، باید هر کدام را بهصورت جداگانه در آرایه externalDomains اضافه کنید.