Hallo Sam,
Ja, mit den expression()-Aufrufen habe ich Missbrauch
getrieben, wie du ja auch an dem „Lamm & Co“ merkst. Das vor
dem Doppelpunkt hättest du ohne weiteres auch weglassen
können. Eigentlich hat Microsoft hier etwas anderes
vorgesehen, nämlich „behavior:“.
ich habe nur leider nichts verstanden. was für einen
missbrauch??
Expressions in CSS sind eigentlich zur Berechnung von Werten gedacht, die man CSS-Eigenschaften zuweisen will, wie z.B.
width:expression(this.parentNode.offsetWidth-10);würde dem Element die Weite seines Elternelements verpassen abzüglich 10 Pixeln. Expression iat aber von Microsoft nicht gedacht, um unmotiviert, ohne Wertzuweisung irgendwelchen Javascript-Code auszuführen, wie ich das gemacht habe, das war ein Missbrauch.
Deshalb habe ich auch die CSS-Eigenschaften auch der-wolf, das-lamm und der-habicht gewählt, bei denen man sofort erkennt, dass es sie nicht wirklich gibt, sondern dass ich dich damit auf die Schüppe nehmen wollte. Das Javascript in dem fiktiven zugewiesenen Nonsens-Wert funktioniert aber, wie du siehst.
Dazu legst du dir erst einmal eine Textdate an und speicherst
diese aber nicht mit der Erweiterung „.txt“ sondern „.htc“ ab.
und wie geht das???
Ganz einfach, du speicherst dir den nachfolgenden Code mit einem einfachen Editor als HTC-Datei ab
speichern unter ->
als Dateinamen wählst du z.B. „hover.htc“
var innerList = getElementsByTagName(‚UL‘)[0];
function Expand() {
var evt = window.event;
if(innerList && evt.fromElement &&
!contains(evt.fromElement))
innerList.style.display = „block“;
}
function Collapse() {
var evt = window.event;
if(innerList && evt.toElement &&
!contains(evt.toElement))
innerList.style.display = „“;
}
Der Conditional-Comment für den IE, in dem du die
HTC-Datei mit dem Javascript referenzierst, sieht dann so
aus.
danke für den code aber mein ziel ist es ohne JS aus zu kommen
da viele user javascript blockieren.
Dann wirst du den IE6 niemals zum Hovern anderer Elemente als dem A-Element bringen. In A-Elementen darfst du aber keine Tabellen schachteln und erst recht keine anderen Links. Sonst ist es kein valider Code und vernünftige Browser müssen ihn ignorieren.
aber ich werde mih wieder melden. ich habe fast eine lösung
für beider ie und nonie. aber ich muss noch etwas änderen und
ihn noch mit ie7 testen. mit firefox und ie6 geht der pure css
code wunderbar.
Sobald ein CSS-Code „behavior“ oder „expression“ enthält, ist es kein purer CSS-Code, auch wenn er so aussieht. Weder „behavior“ noch „expression“ wird im IE ohne aktiviertes Javascript funktionieren.
Damit sind wir ja wieder beim Ausgangspunkt unserer Diskussion:
Der IE ist einfach ein defekter Browser, der ohne Javascript-Krücken oder invaliden Code, den dann zu Recht kein anderer Browser versteht, nicht richtig funktionieren kann.
Gruß Gernot