Hallo zusammen,
meine Seite ist in XHTML 1.0 Strict aufgebaut.
Ich verwende ein einfaches GMENU:
navigation.primary = HMENU
navigation.primary {
special = directory
special.value = {$folder_primary}
entryLevel = 1
1 = GMENU
1.NO {
XY = [20.w]+28,25
transparentBackground = 1
20 = TEXT
20 {
text.field = title
offset = 13,19
fontColor = #777777
fontSize = 20
fontFile = {$font_b}
}
}
1.RO < .1.NO
1.RO = 1
1.RO {
20.fontColor = {$farbe_gruen}
}
1.ACT < .1.NO
1.ACT = 1
1.ACT {
20.fontColor = {$farbe_rot}
20.fontSize = 24
20.offset = 16,19
}
}
Im Internet Explorer wird alles korrekt angezeigt, nur die Rollovers funktionieren dort nicht. In FF & Opera geht alles einwandfrei. Wenn ich den Doctype von "Strict" auf "Transitional" umschalte, funktionieren die Rollovers auch im IE.
Ich vermute das Problem beim over/out JavaScript von Typo3, kann aber nichts finden. Hat sich schonmal jemand damit befasst / ein Ähnliches Problem gehabt?
Wie löst man das?
grüße
thmsgr
wieso dann unbedingt strict verwenden, wenns mit transitional doch geht? dort darfst du dann z.B. auch keine target-attribute in links verwenden. transitional ist doch vollkommen ausreichend... und ausserdem warum postest du das hier im barrierefrei forum... ein gmenu ist nunmal nicht wirklich barrierefrei. dann müsstest du schon ein listenmenü benutzen (tmenu)
bei dem eigentlichen problem kann ich dir leider nicht helfen, da ich gmenüs nie verwende.
LineMan schrieb
wieso dann unbedingt strict verwenden, wenns mit transitional doch geht?
Die Vorgabe ist: Erstelle die Seite in Strict. Ende.
LineMan schrieb
und ausserdem warum postest du das hier im barrierefrei forum... ein gmenu ist nunmal nicht wirklich barrierefrei.
...
Tja, ich bin wohl im falschen Forum. Tut mir leid.
LineMan schrieb
bei dem eigentlichen problem kann ich dir leider nicht helfen
Das hab ich schon gemerkt.
Trotzdem vielen Dank...
grüße
thmsgr
Hallo nochmal,
(vielleicht kann man den Beitrag ja in ein passendes Forum verschieben?)
zu meinem Problem:
Ich habe nun herausgefunden, dass das JavaScript von Typo3 im IE beim Doctype "Strict" einen anderen Wert als erwartet bekommt und deshalb nicht funktioniert.
Konkret sieht das so aus:
function over(name,imgObj) { //
if (version == "n3" && document[name]) {
document[name].src = eval(name+"_h.src");
}
else if (typeof(document.getElementById)=="function" && document.getElementById(name)) {
document.getElementById(name).src = eval(name+"_h.src");
}
...
}
Das Problem ist nun, dass die Abfrage nach typeof(document.getElementById)=="function" beim IE den Wert "object" zurückliefert. Somit wird der Rollover nicht ausgeführt.
Abhilfe könnte z. B. dadurch geschafft werden, indem man nur schreibt:
else if (document.getElementById && document.getElementById(name)) {
Die Frage ist nur, wo / wie kann man das JavaScript entsprechend abändern?
Hat jemand eine Idee?
grüße
thmsgr
Hallo,
etwas spät, aber eventuell hilft es dem einen oder anderen noch weiter.
Es handelt sich um folgende Datei:
/typo3/sysext/cms/tslib/class.tslib_fe.php
Zeile 3736 bis 3747:
' // JS function for mouse-over
function over(name,imgObj) { //
if (version == "n3" && document[name]) {document[name].src = eval(name+"_h.src");}
else if (typeof(document.getElementById)=="function" && document.getElementById(name)) {document.getElementById(name).src = eval(name+"_h.src");}
else if (imgObj) {imgObj.src = eval(name+"_h.src");}
}
// JS function for mouse-out
function out(name,imgObj) { //
if (version == "n3" && document[name]) {document[name].src = eval(name+"_n.src");}
else if (typeof(document.getElementById)=="function" && document.getElementById(name)) {document.getElementById(name).src = eval(name+"_n.src");}
else if (imgObj) {imgObj.src = eval(name+"_n.src");}
}';