MediaWiki:Copyheadings.js

From www.PSALTIKI.info
Jump to: navigation, search
/* Делает так, чтобы:
   1) при тройном клике на заголовках страницы и разделов и копировании выделенного не копировался текст «[править | править вики-текст]»;
   2) при тройном клике на заголовках разделов и копировании выделенного копировалось <Название страницы>#<Название раздела>.
   Также работает в режиме предпросмотра, в том числе быстрого. Проверялось в Хроме, и только.
   Скрипт, реализующий только первую функцию (и без быстрого предпросмотра), — Участник:Jack who built the house/copy clean headings.js. */

document.getElementById('firstHeading').innerHTML = document.getElementById('firstHeading').innerHTML + '<div style="height:0; float:right;">&nbsp;</div>';
var pagename = mw.config.get('wgPageName').replace(/_/g, ' ');

function cleanSectionHeadings() { // чтобы не копировалось «[править | править вики-текст]» в заголовках разделов
	var section_headings = document.getElementsByClassName('mw-headline');
	for (i = 0; i < section_headings.length; i++) {
		section_headings[i].innerHTML = section_headings[i].innerHTML + '<div style="height:0; float:right;">&nbsp;</div>';
	}
}

function fullSectionHeadings() { // чтобы добавлялось название страницы + знак решётки к заголовкам разделов
	var section_headings = document.getElementsByClassName('mw-headline');
	for (i = 0; i < section_headings.length; i++) {
		section_headings[i].innerHTML = '<span style="font-size:0; color:white; line-height:0; letter-spacing:0;">' + pagename + '#</span>' + section_headings[i].innerHTML;
	}
}

fullSectionHeadings();
cleanSectionHeadings();
var fullSectionHeadings_timeout, cleanSectionHeadings_timeout;
var wait_PreviewLive_load = setTimeout(function() {
	if (document.getElementById('wpPreviewLive')) {
		document.getElementById('wpPreviewLive').onclick = function() {
			clearTimeout(fullSectionHeadings_timeout);
			clearTimeout(cleanSectionHeadings_timeout);
			fullSectionHeadings_timeout = setTimeout(fullSectionHeadings, 2000);   // 2000 — 2 секунды. Увеличьте, если страница в режиме
			cleanSectionHeadings_timeout = setTimeout(cleanSectionHeadings, 2000); // быстрого предпросмотра не успевает загрузиться
		};
		clearTimeout(wait_PreviewLive_load);
	}
}, 1000);