پرش به محتوا

مدیاویکی:Common.js

از ویکی ایران
نسخهٔ تاریخ ‏۱۷ فوریهٔ ۲۰۲۶، ساعت ۱۶:۳۸ توسط Alireza (بحث | مشارکت‌ها) (صفحه‌ای تازه حاوی «Any JavaScript here will be loaded for all users on every page load.: // بسته بودن پیش‌فرض سایدبارها در skin Vector 2022 if (mw.config.get( 'skin' ) === 'vector-2022') { // از یک MutationObserver استفاده می‌کنیم تا مطمئن شویم صفحه کاملاً آماده و انیمیشن‌ها بارگذاری شده‌اند. const observer = new MutationObserver(function(muta...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
/* Any JavaScript here will be loaded for all users on every page load. */
// بسته بودن پیش‌فرض سایدبارها در skin Vector 2022
if (mw.config.get( 'skin' ) === 'vector-2022') {
    // از یک MutationObserver استفاده می‌کنیم تا مطمئن شویم صفحه کاملاً آماده و انیمیشن‌ها بارگذاری شده‌اند.
    const observer = new MutationObserver(function(mutationsList, observer) {
        for (const mutation of mutationsList) {
            // به دنبال کلاسی می‌گردیم که نشان می‌دهد صفحه برای تعامل آماده است.
            if (mutation.target.classList.contains('vector-animations-ready')) {
                
                // بستن منوی اصلی (سایدبار چپ)
                const pinMainMenuButton = document.querySelector('[data-event-name="pinnable-header.vector-main-menu.pin"]');
                if (pinMainMenuButton && pinMainMenuButton.getAttribute('aria-pressed') === 'true') {
                    // اگر دکمه در حالت "پین شده" است (aria-pressed=true)، آن را کلیک می‌کنیم تا بسته شود.
                    pinMainMenuButton.click();
                }

                // بستن منوی ابزارهای صفحه (سایدبار راست)
                const pinPageToolsButton = document.querySelector('[data-event-name="pinnable-header.vector-page-tools.pin"]');
                 if (pinPageToolsButton && pinPageToolsButton.getAttribute('aria-pressed') === 'true') {
                    // اگر دکمه در حالت "پین شده" است، آن را کلیک می‌کنیم تا بسته شود.
                    pinPageToolsButton.click();
                }

                // بعد از انجام کار، observer را غیرفعال می‌کنیم.
                observer.disconnect();
                break;
            }
        }
    });

    // شروع به نظارت بر تغییرات کلاس روی المان <html> می‌کنیم.
    observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
}