Bruker:Wintermute/samle.js
Utseende
Merk: Etter publisering vil det kanskje være nødvendig å slette mellomlageret i nettleseren din for å se endringene.
- Firefox / Safari: Hold Shift mens du klikker på Oppdater, eller trykk enten Ctrl+F5 eller Ctrl+R (⌘+R på Mac)
- Google Chrome: Trykk Ctrl+Shift+R (⌘+Shift+R på Mac)
- Edge: Hold Ctrl mens du trykker på Oppdater eller trykk Ctrl+F5
// ============================================================
// SAMLE
// ============================================================
// Dette er en videreutvikling/tilpassing fra [[:da:MediaWiki:Monobook.js]]
// Følgende funksjoner brukes for å slå sammen navigasjonsbokser,
// slik at de får en felles ramme.
// Dette gjøres ved hjelp av klassen NavSamling.
// Mer presist benytter den identene satt med createNavigationBarToggleButton()
// Deretter utelukker den alle vis/skjul-bokser som ikke er NavFrame
// joinFrames
// ============================================================
// Mottar en gruppe med NavFrames, fra joinNavigationBars(), og slår dem sammen
// Parametre:
// nodes: Gruppen av rammer som skal spleises
function joinFrames(nodes) {
// Lager en div.NavSamling
var e = document.createElement("div");
e.className = "NavSamling";
e.setAttribute("class", "NavSamling");
e.setAttribute("className", "NavSamling");
e.setAttribute("id", "NavSamling");
// Legger til kloner av rammen
for (i = 0; i < nodes.length; i++) {
e.appendChild(nodes[i].cloneNode(true));
}
// Legger alt sammen etter siste ramme i gruppa
var last_node = nodes[nodes.length-1];
var parent_node = last_node.parentNode;
var next_node = last_node.nextSibling;
// Fjerner de gamle rammene
for (i = 0; i < nodes.length; i++) {
parent_node.removeChild(nodes[i]);
}
// Setter inn klonene
parent_node.insertBefore(e, next_node);
} // end function
// joinNavigationBars
// ============================================================
// Går gjennom alle skjulRammer på siden og sender grupper til joinFrames()
function joinNavigationBars() {
// Lager en matrise som skal fylles med alle .skjulRamme
var nodes = new Array();
// En funksjon for å gjøre dette enkelt
var e = function(x) { return document.getElementById("skjulRamme" + x); };
// Alle rammer på siden sjekkes
for(
var i=1, NavFrame = e(i), NextNavFrame = e(i+1);
NavFrame;
i++, NavFrame = NextNavFrame, NextNavFrame = e(i+1)
) {
// Hopp over dersom den er samlet, mangler parentNode eller ikke er NavFrame
if (!NavFrame.parentNode
|| NavFrame.parentNode.className == "NavSamling"
|| NavFrame.className.search('NavFrame') == -1) {
continue;
} // end if
// Dersom neste ramme er inntil, eller en tom linje fra, og er en NavFrame,
// legges den i node-matrisen
if ((NavFrame.nextSibling == NextNavFrame ||
(NavFrame.nextSibling &&
NavFrame.nextSibling.nodeType == 3 &&
NavFrame.nextSibling.nextSibling &&
NavFrame.nextSibling.nextSibling == NextNavFrame
)
) && /NavFrame/.test(NextNavFrame.className)) {
// Er matrisen tom legges denne rammen først
if (!nodes || nodes.length == 0) nodes = [NavFrame];
// Neste ramme legges bakerst i matrisen
nodes.push(NextNavFrame);
// Er ikke neste ramme tilfredsstillende sjekkes
// om man har mange nok for å slå sammen og tømme matrisen
} else if (nodes.length > 1) {
joinFrames(nodes);
nodes = new Array();
} // end if-else
} // end for
// Er det flere navigasjonsbokser etter hverandre sendes de til joinFrames()
if (nodes.length > 1) {
joinFrames(nodes);
}
} // end function
// Legger den sist i rekken over ting som skal gjøres når siden er klar
addLoadEvent(joinNavigationBars);
// END SAMLE
// ============================================================