Hallo,
das Layermenu wirft im IE immer dem gleichen Fehler aus (getestet mit IE8-). Sogar mit dem Beispiel auf typo3wizard.
http://www.typo3wizard.com/de/snippets/menus/text-layer-menue/anzeigebeispiel-text-layer-menue.html
Hat schon jemand einen Fix dafür? Mich selbst stört das nicht, aber es soll ja Personen geben die sich darauf aufhängen.
Grüße
Solche Personen sollten dann vielleicht ihr eigenes Javascript schreiben und über ein einfaches TMENU einbinden. Würde ich sowieso jedem zu raten.
Mit der "friss oder stirb"-Technik komme ich da leider nicht sehr weit.
Kann jemand das zumindest argumentieren wieso Fehler ausgeworfen werden? Liegt das an fehlenden Objektüberprüfungen?
Hallo,
der Fehler wird dann verursacht, wann immer die Seite neu geladen wird und gleichzeitig die Maus mehr oder weniger schnell bewegt wird. Grund für dieses Fehlverhalten sind natürlich die ungeduldigen Mausschupfer :-> und ein kleines Laufzeitproblem.
Abhilfe schafft eine Try & Catch Konstrukt in der gmenu_layer.php bzw äquivalent in der tmenu_layer.php (zu finden bekannterweise in typo3/sysext/cms/tslib/media/scripts/)
Man sucht im Quelltext nach folgender Zeile (etwa um Z.440):
$GLOBALS['TSFE']->JSeventFuncCalls['onmousemove']['GL_getMouse(e)']= 'GL_getMouse(e);'; // Should be called BEFORE any of the 'local' getMouse
und ersetzt diese durch:
$GLOBALS['TSFE']->JSeventFuncCalls['onmousemove']['GL_getMouse(e)']= 'try{GL_getMouse(e);}catch(ex){};';
Der Sinn von dem Ganzen ist, dass wenn dieser unschöne Fehler auftritt, welcher im Übrigen nur nervt, aber keine Funktionsbeeinträchtigung nach sich zieht, abgefangen wird und im catch Block ins Leere läuft. Eine expliziete Fehlerbehandlung ist unnötig. Durch diese Maßnahme bekommt der Browser nichts mit und alles ist primi...
Andi
______________________________________________
Es gibt keine Probleme - nur Herausforderungen
Der Sinn von dem Ganzen ist, dass wenn dieser unschöne Fehler auftritt, welcher im Übrigen nur nervt, aber keine Funktionsbeeinträchtigung nach sich zieht, abgefangen wird und im catch Block ins Leere läuft. Eine expliziete Fehlerbehandlung ist unnötig.
Stimmt so nicht ganz:
Der Skriptfehler kommt zwar nicht zur Anzeige und wird abgefangen, aber das Menü funktioniert anschließend nicht mehr richtig. Bei Mouseover auf das aufgeklappte Menü verschwindet dieses sofort wieder.
Folgendes funktioniert jetzt aber mit Sicherheit. Habe ich unter IE6/IE7/IE8 und FF3 getestet.
$GLOBALS['TSFE']->JSeventFuncCalls['onmousemove']['GL_getMouse(e)']='try{GL_getMouse(e);}catch(ex){GL_getMouse(e);};';
$GLOBALS['TSFE']->JSeventFuncCalls['onmousemove'[$this->WMid]='try{GL'.$this->WMid.'_getMouse(e);}catch(ex){GL_getMouse(e);};';
In den beiden Catch Blöcken wird die Methode GL_getMouse(e) der jsfunc.layermenu.js nochmals aufgerufen...