Benutzer:TMg/showInfoboxToggle.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/**
* Erlaubt das Ein- und Ausklappen von Taxo- und Infoboxen, ähnlich wie beim
* Inhaltsverzeichnis oder den Navigationsleisten. Eine ausführliche
* Beschreibung ist auf der Diskussionsseite zu finden.
*/
function toggleInfobox( a ) {
/* Koordinatenvorlage vor dem Ausblenden retten */
var c = document.getElementById( 'coordinates' );
if ( c ) {
document.getElementById( 'bodyContent' ).appendChild( c );
}
var r = a;
while ( r && r.nodeName !== 'TR' ) {
r = r.parentNode;
}
if ( !r ) {
r = a;
while ( r && r.nodeName !== 'DIV' ) {
r = r.parentNode;
}
}
if ( !r ) {
return false;
}
while ( r = r.nextSibling ) {
if ( r.nodeType === 1 && r.style ) {
r.style.display = r.style.display === 'none' ? '' : 'none';
}
}
var sHide = window.NavigationBarHide ? NavigationBarHide : 'Einklappen';
var sShow = window.NavigationBarShow ? NavigationBarShow : 'Ausklappen';
a.firstChild.data = a.firstChild.data === sShow ? sHide : sShow;
return false;
}
( function() {
if ( !document.createTextNode ) {
return;
}
var headers,
i = 0;
/* HTML 5, supported since Opera 9.5 */
if ( document.getElementsByClassName ) {
headers = document.getElementById( 'bodyContent' ).getElementsByClassName( 'collapsible' );
} else {
headers = document.getElementById( 'bodyContent' );
headers = headers.all ? headers.all : headers.getElementsByTagName( '*' );
var regex = /(?:^|\s)collapsible(?:\s|$)/;
for ( i = 0; i < headers.length; i++ ) {
if ( regex.test( headers[i].className ) ) {
break;
}
}
}
if ( headers && headers.length > 0 && i < headers.length ) {
/* Die Standardhierarchie ist TABLE → TBODY → TR → TD/TH */
if ( headers[i].nodeName === 'TABLE' ) {
headers = headers[i].getElementsByTagName( 'TR' );
i = 0;
}
if ( headers[i].nodeName === 'TR' ) {
headers = headers[i].childNodes;
/* Leere Textknoten zwischen den Zellen auslassen */
for ( i = headers.length - 1; i >= 0; i-- ) {
if ( headers[i].nodeType === 1 ) {
break;
}
}
}
} else {
headers = document.getElementsByTagName( 'TH' );
for ( i = 0; i < headers.length; i++ ) {
var h = headers[i];
/* Sucht nach dem ersten Textknoten innerhalb der Tabellenzelle */
while ( h.nodeType === 1 && h.firstChild ) {
h = h.firstChild;
}
if ( h.data
&& /^(?:[a-z]*daten|Allgemein(?:es)?|Physikalische Eigenschaften|Systematik)\b/i.test( h.data )
) {
break;
}
}
}
if ( i >= headers.length ) {
return;
}
var eSpan = document.createElement( 'SPAN' );
eSpan.style.fontSize = 'x-small';
eSpan.style.fontWeight = 'normal';
var toggle = document.createElement( 'A' );
toggle.href = '#';
toggle.onclick = function() {
return toggleInfobox( this );
};
/* Bei hell auf dunkel umgefärbten Kopfzellen (z.B. Autobahnen) die Textfarbe übernehmen */
if ( headers[i].style.color && headers[i].style.color !== '#000000' ) {
toggle.style.color = headers[i].style.color;
}
toggle.appendChild( document.createTextNode( window.NavigationBarHide
? NavigationBarHide
: 'Einklappen' ) );
eSpan.appendChild( document.createTextNode( '[' ) );
eSpan.appendChild( toggle );
eSpan.appendChild( document.createTextNode( ']' ) );
headers[i].appendChild( document.createTextNode( ' ' ) );
headers[i].appendChild( eSpan );
if ( window.NavigationBarShowDefault <= 0 ) {
toggleInfobox( toggle );
}
} )();