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');
});
});
});