Probleme mit Navigationsmenü
Danny_TB
- javascript
0 MudGuard0 rainer groth0 Struppi
Hallo
ich arbeite zur Zeit an einem Projekt. Unter der Adresse www.haus-margarete-aachen.de könnt ihr es zum besseren Verständnis einsehen. Nun zum Problem:
Ich habe ein Navigationsmenü in die Site eingebaut. Da ich mich mit Javascript nicht so gut auskenne habe ich den freien Quellcode von einer Site übernommen und an meine Bedürfnisse angepasst.
Nur am Rande:
Ich weiss das das nicht besonders elegant ist, ich wußte mir halt nicht anders zu helfen, außerdem wurde ausdrücklich darauf hingewiesen das man ihn für sich selbst nutzen darf.
Zurück zum Problem:
Wenn man auf den obersten Menüpunkt "unser haus" klickt klappt das menü auf. Klickt man nun die unterpunkte an wird die entsprechende site geladen, das menü wird aber wieder zugeklappt. Ist auch klar weil ich keine frames verwendet habe und die site komplett neu geladen wird.
Gibt es eine Art Parameterübernahme mit der ich der zu ladenen Site sagen kann das Sie das Menü aufgeklappt halten soll ?
Hier der Menü-Quellcode:
var stayFolded=false
var exImg=new Image(); exImg.src='../common/logos/dsmh.gif'
var unImg=new Image(); unImg.src='../common/logos/usm.gif'
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
var browser=((n || ie) && parseInt(navigator.appVersion)>=4)
function makeMenu(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.'
this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')
this.ref=(n) ? eval(nest+'document.'+obj+'.document'):eval('document');
this.height=n?this.ref.height:eval(obj+'.offsetHeight')
this.x=(n)? this.css.left:this.css.pixelLeft;this.y=(n)? this.css.top:this.css.pixelTop;
this.hideIt=b_hideIt; this.showIt=b_showIt; this.vis=b_vis; this.moveIt=b_moveIt
return this
}
function b_showIt(){this.css.visibility="visible"}
function b_hideIt(){this.css.visibility="hidden"}
function b_vis(){if(this.css.visibility=="hidden" || this.css.visibility=="hide") return true;}
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x; this.css.top=this.y}
function init(){
oTop=new Array()
oTop[0]=new makeMenu('divTop1','divCont')
oTop[1]=new makeMenu('divTop2','divCont')
oTop[2]=new makeMenu('divTop3','divCont')
oTop[3]=new makeMenu('divTop4','divCont')
oTop[4]=new makeMenu('divTop5','divCont')
oTop[5]=new makeMenu('divTop6','divCont')
oSub=new Array()
oSub[0]=new makeMenu('divSub1','divCont.document.divTop1')
oSub[1]=new makeMenu('divSub2','divCont.document.divTop2')
oSub[2]=new makeMenu('divSub3','divCont.document.divTop3')
oSub[3]=new makeMenu('divSub4','divCont.document.divTop4')
oSub[4]=new makeMenu('divSub5','divCont.document.divTop5')
oSub[5]=new makeMenu('divSub6','divCont.document.divTop6')
for(i=0;i<oSub.length;i++){ oSub[i].hideIt() }
for(i=1;i<oTop.length;i++){ oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height) }
}
function menu(num){
if(browser){
if(!stayFolded){
for(i=0;i<oSub.length;i++){
if(i!=num){
oSub[i].hideIt()
oTop[i].ref["imgA"+i].src=unImg.src
}
}
for(i=1;i<oTop.length;i++){
oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
}
}
if(oSub[num].vis()){
oSub[num].showIt()
oTop[num].ref["imgA"+num].src=exImg.src
}else{
oSub[num].hideIt()
oTop[num].ref["imgA"+num].src=unImg.src
}
for(i=1;i<oTop.length;i++){
if(!oSub[i-1].vis()) oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height+oSub[i-1].height)
else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].height)
}
}
}
P.S.
Bitte zum Betrachten IE5 1024x768 und Java aktivieren. Und bitte noch keine Kritik was ihr so toll oder schlecht an der site findet Wie zu erkennen ist befindet sich die site im aufbau und wird in naher zukunft für div. browser und auflösungen zusätzlich optimiert.
Danke
Gruß
Daniel
Hi,
Bitte zum Betrachten IE5 1024x768 und Java aktivieren.
Jetzt wollt ich's mir doch grade anschauen.
Aber ich erfülle Deine Voraussetzungen nicht...
Warum sollte man eigentlich Java aktivieren? Ist da ein Applet auf der Seite?
cu,
Andreas
Hi,
Bitte zum Betrachten IE5 1024x768 und Java aktivieren.
Jetzt wollt ich's mir doch grade anschauen.
Aber ich erfülle Deine Voraussetzungen nicht...Warum sollte man eigentlich Java aktivieren? Ist da ein Applet auf der Seite?
cu,
Andreas
hi
nein kein applet, nur scripts, und was soll der quatsch mit den vorraussetzungen ? Diese habe ich nur angebeben damit keiner sagt die seite sieht bei mir aber komisch aus usw. aber du hast wahrscheinlich den letzten abschnitt nicht richtig gelesen.
cu,
daniel
Hi,
Bitte zum Betrachten IE5 1024x768 und Java aktivieren.
nein kein applet, nur scripts,
Warum sollte man dann Java aktivieren?
und was soll der quatsch mit den vorraussetzungen ?
Das hab ich mich auch gefragt, aber Du hast die angegeben, nicht ich.
IE 5 würde ich nicht mal dann aktivieren, wenn ich ihn hätte. Der IE 5.5, den ich habe, wird ausschließlich dann aktiviert, wenn ich nicht im Internet bin. Aus Sicherheitsgründen. Ich brauch meinen Rechner noch für andere Dinge.
cu,
Andreas
Hallo Daniel,
... Wie zu erkennen ist befindet sich die site im aufbau und wird in naher zukunft für div. browser und auflösungen zusätzlich optimiert.
IMHO sollte die Site bereits jetzt ueberarbeitet werden - ich bekomme naemlich folgendes angezeigt:
IE 6.0.26 - eine dunkelgraue Flaeche;
Netscape 6.2.1 - ein 'under construction'- Schild, auf der 'allgemein.htm' KEIN Menue;
NC 4.75 - eine dunkelgraue Flaeche;
Opera 6.01 - eine dunkelgraue Flaeche;
Mozilla 1.3.1 - ein 'under construction'-Schild, auf der 'allgemein.htm' eine Art Menue, deren Bestandteile sich uebel ueberlagern.
gruesse
rainer groth
Hier der Menü-Quellcode:
var stayFolded=false
var exImg=new Image(); exImg.src='../common/logos/dsmh.gif'
var unImg=new Image(); unImg.src='../common/logos/usm.gif'
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
Dasmit hast du jetzt die 4'er Versionen der Browser, aber mittlerweile gibt es Netscape 7.
function makeMenu(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.'
this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')
eval ist eval, darüber hinaus hier überflüssig, langsam und fehleranfällig.
this.css=(n) ? nest.document[obj] : document.all[obj].style;
this.ref=(n) ? eval(nest+'document.'+obj+'.document'):eval('document');
das gleiche hier.
Das ganze Skript ist reichlich veraltet und sieht mir nicht so aus als ob es sinnvoll zum laufen zu bringen ist.
Bitte zum Betrachten IE5 1024x768 und Java aktivieren. Und bitte noch keine Kritik was ihr so toll oder schlecht an der site findet Wie zu erkennen ist befindet sich die site im aufbau und wird in naher zukunft für div. browser und auflösungen zusätzlich optimiert.
Weder Java ist nötig und eigentlich muss eine Interneseite nicht für irgendwas optimiert werden, wenn man valides HTML/CSS verwendet.
JS Menues sind nicht besonders klug, auch wenn d mir jetzt sagst das 100% deiner Besucher JS angeschaltet haben (es gibt Firmennetze wo JS ausgefiltert wird), wirst du mit so enem Menü wenig Freude haben, da auch Suchmaschinen kein JS können. und es ist erheblich schwerer zu pflegen als stinknormales HTML.
Struppi.