Vorlage Diskussion:Ausklappen2: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
K
(→‎Monobook.js: vielleicht geht das so auch mit dem Safari?)
Zeile 81: Zeile 81:
 
}
 
}
  
}
 
 
// Diese Funktion weist einem Objekt einen Event-Handler zu.
 
// Argumente: objekt - das Objekt
 
// onEvent - ein event, z.b. "click" (ohne das "on", kleingeschrieben, als String)
 
// funktion - ein Pointer auf die aufzurufende Funktion
 
// captionMode - falls es keinen speziellen Grund gibt, einfach auf false setzen
 
function addEvent(objekt, onEvent, funktion, captionMode )
 
{
 
if (objekt.addEventListener)
 
{
 
objekt.addEventListener(onEvent, funktion, captionMode);
 
return true;
 
}
 
else if (objekt.attachEvent)
 
{
 
var ret = objekt.attachEvent("on" + onEvent, funktion);
 
return ret;
 
}
 
else
 
{
 
return false;
 
}
 
 
}
 
}
  
Zeile 144: Zeile 121:
 
}
 
}
  
// makeAusklapp() nach Laden des Fensters ausführen!!
+
// Nach dem Laden des Fensters folgendes Ausführen:
addEvent( window, "load", makeAusklapp, false );
+
window.onload = function () { makeAusklapp(); }
 +
//eigentlich ist das eine unschöne Lösung... Hoffentlich werden keine anderen Events überschrieben!
 +
 
 
</pre>
 
</pre>
  

Version vom 4. Februar 2008, 21:52 Uhr

Damit die Vorlagen Vorlage:Ausklappen2 und Vorlage:Ausklappen3 funktionen, müsste folgendes ergänzt werden. -- Grüße J* 23:34, 27. Jan 2008 (CET)

Ich hab' das mal beides ergänzt. Funzt alles super ... getestet in Firefox2 und IE7. Einziger Haken: die Klick-Kats und Sonderzeichen sind jetzt unter dem Bearbeiten-Fenster (so wie früher?). Überschneiden sich da irgendwelche Klassen? Blick' gerade nicht durch.
Trotzdem: vieles groß DANKE! --WiMu 11:00, 28. Jan 2008 (CET)
Super! Das sieht nach harter Arbeit aus... Danke an alle Java- und sonstigen Kümmerer sagt das Schachtelkamel 12:47, 28. Jan 2008 (CET)
Im Monobook.css hatte ich eine Klammer vergessen (die geschweifte ganz am Ende) - die noch mit rein, und dann geht das auch mit den Kats wieder --J* 13:44, 28. Jan 2008 (CET)
Mit Firefox geht es bei mir, leider bin ich mit Safari aufgeschmissen, da rührt sich nix bei Klick und die KATs hängen bei mir trotz refresh des Browsers (bei Safari) auch noch unten drunter … WiKa 13:47, 28. Jan 2008 (CET)
Hab die fehlende Klammer in der Monobook.css ergänzt. Im FF funzt jetzt alles prima. BTW: Safari ist doch eher was für die Jungs mit den kleinen Geschlechtsorganen ;) -- Ameise 14:06, 28. Jan 2008 (CET)
… ja deshalb kann ich nicht darauf verzichten … kann mir denn geholfen werden oder brauch ich einen GRÖßEREN?¿? *g* WiKa 14:49, 28. Jan 2008 (CET)
Ich hab grad noch ein paar Änderungen [1] vorgenommen, um ein Linkproblem zu beheben - könnte das bitte wieder irgendwer übertragen? --J* 17:03, 28. Jan 2008 (CET)
erledigt --WiMu 18:56, 28. Jan 2008 (CET)

Monobook.css

.klapp {
	cursor: pointer;
}
span.klapp {
	text-decoration: none;
	color: #002bb8;
	background: none;
	}

span.klapp:hover {
	text-decoration: underline;
}

Monobook.js

// ================================================================================
// Ein- und Ausblenden per Javascript

// mit den folgenden Funktionen lässt sich ein div-Konstrukt in ein Einblende-Ausblende-Ding verwandeln
//
// Variante 1 (Klick irgendwo blendet ein oder aus):
//	<div class="klapp">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>
//
// Variante 2 (ein- und ausblenden nur mit Links):
//	<div class="klapp_x">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand mit <span class="klapp">Einblendelink</span></div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand mit <span class="klapp">Ausblendelink</span></div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>

function ausklapp( element )
{
	var klapp_i = null;
	var klapp_e = null;
	var klapp_t = null;

	for (i in element.childNodes)
	{
		if( element.childNodes[i].nodeType == 1 )
		{
			if ( element.childNodes[i].className == "klapp_i" )
				klapp_i = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_t" )
				klapp_t = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_e" )
				klapp_e = element.childNodes[i];
		}

		if ( klapp_i && klapp_t && klapp_e )
			break;
	}

	if( klapp_i.style.display != "none")
	{
		klapp_i.style.display = "none";
		klapp_e.style.display = "none";
		klapp_t.style.display = "block";

	}
	else
	{
		klapp_i.style.display = "block";
		klapp_e.style.display = "block";
		klapp_t.style.display = "none";
	}

}

function getKlappDiv( obj )
{
	while ( obj && obj.parentNode && obj.className != "klapp_x" )
		obj = obj.parentNode;

	return obj;
}

// Event-Handler für alle class="klapp"-Objekte zuweisen
function makeAusklapp()
{
	// klapp-div-Rahmen
	var a = document.getElementsByTagName("div"); 
	for ( div in a )
	{
		if ( a[div].className == "klapp" )
		{
			//Leider nicht IE-Kompatibel:
			//var f = function () { ausklapp(this) };
			//addEvent( a[div], "click", f , false );
			//stattdessen:

			a[div].onclick = function () { ausklapp(this);}
		}
	}

	// klapp-spans-Rahmen als Link-Ersatz
	var a = document.getElementsByTagName("span"); 
	for ( span in a )
	{
		if ( a[span].className == "klapp" )
		{
			a[span].onclick = function () { ausklapp(getKlappDiv( this ));}
		}
	}

}

// Nach dem Laden des Fensters folgendes Ausführen:
window.onload = function () { makeAusklapp(); }
//eigentlich ist das eine unschöne Lösung... Hoffentlich werden keine anderen Events überschrieben!

*zweckendfremd*

nur mal so nebenbei ... funktioniert noch nicht 100%ig (man muss 2x klicken am Anfang) ... aber *großeaugenmach*

--WiMu 13:21, 28. Jan 2008 (CET)

Würde ich so lösen:

--J* 14:41, 28. Jan 2008 (CET)

jupp, ist mir im nachinein auch aufgegangen, dass man beides in den Titel stopfen sollte ... lustig ist, dass der Text hier einmal rechts, einmal drunter angezeigt wird, weil die Ka-Mel-Oh!-Vorlage per default left floatet :-) --WiMu 15:09, 28. Jan 2008 (CET)