Dantes (обсуждение | вклад) Нет описания правки |
Dantes (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ | |||
function insertAfter(newNode, referenceNode) { | |||
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); | |||
} | |||
// Код данте ниже | |||
function setupTabs() { | |||
const tabHeaders = document.querySelectorAll('.tab-header'); | |||
const tabContents = document.querySelectorAll('.tab-content'); | |||
console.log("Количество заголовков вкладок:", tabHeaders.length); | |||
console.log("Количество содержимого вкладок:", tabContents.length); | |||
tabHeaders.forEach(function(header, index) { | |||
header.addEventListener('click', function() { | |||
console.log("Клик по вкладке:", index); | |||
tabHeaders.forEach(function(h) { | |||
h.classList.remove('active'); | |||
}); | |||
tabContents.forEach(function(c) { | |||
c.classList.remove('active'); | |||
}); | |||
header.classList.add('active'); | |||
tabContents[index].classList.add('active'); | |||
}); | |||
}); | |||
} | |||
mw.hook('wikipage.content').add(setupTabs); | |||
// выше, ниже мой недо скрип | |||
// Конец данте | |||
function addCopyButtons() { | |||
var codeBlocks = document.querySelectorAll('code:not(.copy-processed)'); | |||
codeBlocks.forEach(function(block) { | |||
var copyButton = document.createElement('button'); | |||
copyButton.textContent = 'Copy'; | |||
copyButton.className = 'copy-button'; | |||
copyButton.addEventListener('click', function() { | |||
var textArea = document.createElement('textarea'); | |||
textArea.value = block.textContent; | |||
document.body.appendChild(textArea); | |||
textArea.select(); | |||
document.execCommand('copy'); | |||
document.body.removeChild(textArea); | |||
alert('Содержимое скопировано!'); | |||
}); | |||
insertAfter(copyButton, block); | |||
block.classList.add('copy-processed'); | |||
}); | |||
} | |||
// Функция для форматирования содержимого блоков <code> | |||
function formatCodeBlocks() { | |||
var codeBlocks = document.querySelectorAll('code:not(.formatted)'); | |||
codeBlocks.forEach(function(block) { | |||
// Заменяем пробелы на неразрывные пробелы и вставляем <br> для переносов строк | |||
block.innerHTML = block.textContent.replace(/ /g, '\u00A0').replace(/\n/g, '<br>'); | |||
block.classList.add('formatted'); | |||
}); | |||
} | |||
function formatNullDocsAbout() { | |||
$('.docs-about').each(function() { | |||
if ($(this).html().includes("{{{Примечание документа}}}")) { | |||
$(this).hide(); | |||
} | |||
}); | |||
} | |||
// Вызываем функции после загрузки страницы | |||
mw.hook('wikipage.content').add(formatCodeBlocks); | |||
mw.hook('wikipage.content').add(addCopyButtons); | |||
mw.hook('wikipage.content').add(formatNullDocsAbout); | |||
document.addEventListener("DOMContentLoaded", function() { | document.addEventListener("DOMContentLoaded", function() { | ||
var headers = document.querySelectorAll("h3"); | var headers = document.querySelectorAll("h3"); |
Версия от 07:58, 26 августа 2024
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ function insertAfter(newNode, referenceNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } // Код данте ниже function setupTabs() { const tabHeaders = document.querySelectorAll('.tab-header'); const tabContents = document.querySelectorAll('.tab-content'); console.log("Количество заголовков вкладок:", tabHeaders.length); console.log("Количество содержимого вкладок:", tabContents.length); tabHeaders.forEach(function(header, index) { header.addEventListener('click', function() { console.log("Клик по вкладке:", index); tabHeaders.forEach(function(h) { h.classList.remove('active'); }); tabContents.forEach(function(c) { c.classList.remove('active'); }); header.classList.add('active'); tabContents[index].classList.add('active'); }); }); } mw.hook('wikipage.content').add(setupTabs); // выше, ниже мой недо скрип // Конец данте function addCopyButtons() { var codeBlocks = document.querySelectorAll('code:not(.copy-processed)'); codeBlocks.forEach(function(block) { var copyButton = document.createElement('button'); copyButton.textContent = 'Copy'; copyButton.className = 'copy-button'; copyButton.addEventListener('click', function() { var textArea = document.createElement('textarea'); textArea.value = block.textContent; document.body.appendChild(textArea); textArea.select(); document.execCommand('copy'); document.body.removeChild(textArea); alert('Содержимое скопировано!'); }); insertAfter(copyButton, block); block.classList.add('copy-processed'); }); } // Функция для форматирования содержимого блоков <code> function formatCodeBlocks() { var codeBlocks = document.querySelectorAll('code:not(.formatted)'); codeBlocks.forEach(function(block) { // Заменяем пробелы на неразрывные пробелы и вставляем <br> для переносов строк block.innerHTML = block.textContent.replace(/ /g, '\u00A0').replace(/\n/g, '<br>'); block.classList.add('formatted'); }); } function formatNullDocsAbout() { $('.docs-about').each(function() { if ($(this).html().includes("{{{Примечание документа}}}")) { $(this).hide(); } }); } // Вызываем функции после загрузки страницы mw.hook('wikipage.content').add(formatCodeBlocks); mw.hook('wikipage.content').add(addCopyButtons); mw.hook('wikipage.content').add(formatNullDocsAbout); document.addEventListener("DOMContentLoaded", function() { var headers = document.querySelectorAll("h3"); headers.forEach(function(header) { header.style.cursor = "pointer"; header.addEventListener("click", function() { var nextElement = header.nextElementSibling; if (nextElement.style.display === "none") { nextElement.style.display = "block"; } else { nextElement.style.display = "none"; } }); }); }); document.addEventListener('DOMContentLoaded', function() { const buttons = document.querySelectorAll('.custom-button'); buttons.forEach(button => { button.addEventListener('click', function() { // Добавляем класс для активного состояния this.classList.toggle('button-active'); }); }); });