MediaWiki:Gadget-JavascriptHeadings.js

Daripada Wiktionary

Catatan: Selepas menyiarkan perubahan, anda mungkin perlu memintas cache pelayar untuk melihatnya.

  • Firefox / Safari: Tahan Shift sambil mengklik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Internet Explorer / Edge: Tahan Ctrl sambil mengklik Refresh, atau tekan Ctrl-F5
  • Opera: Tekan Ctrl-F5.
jQuery(document).ready(function () {
	if (mediaWiki.config.get('wgAction') !== 'view')
		return; // not just viewing the page
	if (!/^(javascript|css)$/.test(mediaWiki.config.get('wgPageContentModel')))
		return; // not on a JavaScript or CSS page
	var bc = document.getElementById('bodyContent');
	if (!bc)
		return; // shouldn't happen
	var pres = bc.getElementsByTagName('pre');
	if (pres.length !== 1)
		return; // shouldn't happen

	var spans = pres[0].getElementsByTagName('span');
	var numspans = spans.length;

	for (var i = 0; i < numspans; ++i) {
		if (spans[i].className !== 'coMULTI')
			continue;
		if (!spans[i].firstChild.nodeValue)
			continue;

		// TODO \n+ doesn't seem to work here, so using \s+ for now instead
		var res = spans[i].firstChild.nodeValue.match(/\/\*\s*<\/pre>\s+(==+)(.*?)(==+)\s+<pre>\s*\*\//);
		if (!res)
			continue;

		var l = res[1].length < res[3].length ? res[1].length : res[3].length;
		
		var mwNode = document.createElement('span');
		mwNode.className = 'mw-headline';
        mwNode.appendChild(document.createTextNode(res[2]));
		
		var hNode = document.createElement('h' + l);
		hNode.appendChild(mwNode);

		pres[0].replaceChild(hNode, spans[i]);
	}
});