Bruker:Wintermute/samle.js
Fra Wikipedia, den frie encyklopedi
NB: Etter å ha lagret må du tømme nettleserens mellomlager («cache») for å kunne se endringene: Mozilla/Safari/Konqueror: hold nede Shift mens du klikker på Reload (eller trykk Ctrl-Shift-R), IE: trykk Ctrl-F5, Opera: trykk 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 // ============================================================