MediaWiki:Common.js: відмінності між версіями
Wiki (обговорення | внесок) мНемає опису редагування |
Wiki (обговорення | внесок) мНемає опису редагування |
||
| Рядок 841: | Рядок 841: | ||
// ========================= | // ========================= | ||
// КНОПКА ВИПАДКОВА СТОРІНКА ( | // ========================= | ||
// КНОПКА ВИПАДКОВА СТОРІНКА (виправлена версія) | |||
// ========================= | // ========================= | ||
function createRandomButton() { | function createRandomButton() { | ||
| Рядок 879: | Рядок 880: | ||
`; | `; | ||
// | // ВИПРАВЛЕНИЙ ОБРОБНИК КЛІКУ | ||
btn.addEventListener('click', function(e) { | btn.addEventListener('click', function(e) { | ||
e.preventDefault(); | e.preventDefault(); | ||
| Рядок 889: | Рядок 890: | ||
btn.disabled = true; | btn.disabled = true; | ||
// Використовуємо | // Використовуємо звичайний перехід замість replace | ||
setTimeout(() => { | setTimeout(() => { | ||
window.location. | window.location.href = '/w/index.php/Спеціальна:Випадкова_сторінка'; | ||
}, 100); | }, 100); | ||
}); | }); | ||
| Рядок 994: | Рядок 995: | ||
// ========================= | // ========================= | ||
// | // ПОКРАЩЕНЕ ВІДНОВЛЕННЯ КНОПОК ПІСЛЯ ПЕРЕХОДУ | ||
// ========================= | // ========================= | ||
function | function restoreButtons() { | ||
// | // Для всіх тем - кнопка "Як це працює?" | ||
if (!document.getElementById('how-it-works-btn')) { | |||
createHowItWorksButton(); | |||
} | |||
if ( | // Для мобільної версії - кнопка "Випадкова сторінка" | ||
if (document.body.classList.contains('skin-minerva') && !document.getElementById('float-random-btn')) { | |||
createRandomButton(); | |||
} | } | ||
adjustForKeyboard(); | |||
} | } | ||
| Рядок 1039: | Рядок 1039: | ||
// ЗАГАЛЬНИЙ ІНІЦІАЛІЗАТОР | // ЗАГАЛЬНИЙ ІНІЦІАЛІЗАТОР | ||
// ========================= | // ========================= | ||
// Основний ініціалізатор | |||
function initializeAll() { | |||
restoreButtons(); | |||
if (document.body.classList.contains('skin-minerva')) { | if (document.body.classList.contains('skin-minerva')) { | ||
hideMobileElements(); | hideMobileElements(); | ||
} | } | ||
} | |||
// Ініціалізація при завантаженні DOM | |||
document.addEventListener('DOMContentLoaded', function() { | |||
console.log('DOM завантажено - ініціалізація кнопок'); | |||
initializeAll(); | |||
}); | }); | ||
// Ініціалізація при повному завантаженні сторінки | |||
window.addEventListener('load', function() { | window.addEventListener('load', function() { | ||
console.log('Сторінка завантажена - ініціалізація кнопок'); | |||
setTimeout( | setTimeout(initializeAll, 100); | ||
}); | |||
// Ініціалізація при кожному переході між сторінками | |||
window.addEventListener('pageshow', function(event) { | |||
console.log('Перехід на нову сторінку - відновлення кнопок'); | |||
if (event.persisted) { | |||
// Сторінка завантажена з кешу браузера | |||
setTimeout(initializeAll, 50); | |||
} else { | |||
// Звичайне завантаження сторінки | |||
setTimeout(initializeAll, 100); | |||
} | } | ||
}); | }); | ||
// Резервна ініціалізація | |||
setTimeout(function() { | setTimeout(function() { | ||
if (document.body.classList.contains('skin-minerva') && !document.getElementById('float-random-btn')) { | if (!document.getElementById('how-it-works-btn') || | ||
(document.body.classList.contains('skin-minerva') && !document.getElementById('float-random-btn'))) { | |||
console.log('Резервна ініціалізація кнопок'); | |||
initializeAll(); | |||
} | } | ||
}, 2000); | |||
}, | |||
// | // Додаткова перевірка після завантаження контенту | ||
if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', initializeAll); | |||
} else { | |||
setTimeout(initializeAll, 100); | |||
} | |||