grOOvekill@
LegendVienna Badass
|
S'gott,
ich habe eine Website gebastelt, die auf einem Frameset basiert. Es gibt eine Haupt und eine Unternavigationsleiste. Am oberen Bereich befindet sich ein Link, der von deutscher auf englische Sprache umschalten soll. Wichtig dabei ist natürlich, dass ich mich auf der dementsprechenden Seite, auf die ich mich mittels Haupt und Unternavigationsleiste navigiert habe, bleibe. Es soll also nicht einfach die ganz eSite neu aufgebaut werden.
Nun dachte ich daran, das ganz emit Javascript zu realisieren. Ich würde bei einem Klick auf den Link die aktuelle URL auslesen und den letzten Teil, nach dem letzten / einfach auf die englische Seitenbezeichnung austauschen (aus /projekte/2003/skaterpark.html wird /projekte/2003/skaterpark_engl.html).
Leider habe ich bis jetzt noch keine Möglichkeit gefunden, wie ich die URL als String einlesen kann. Ich brauche dann ja auch noch die Möglichkeit, nur den letzten Teil des Strings, also den Dateinamen der Seite, zu ändern.
Hat irgendjemand schon einemal etwas derartiges programmiert? Gibt es gar einfachere Lösungen für dieses Problem?
Bin wie immer dankbar für jede Hilfe!
|
Guest
Deleted User
|
|
grOOvekill@
LegendVienna Badass
|
Will ja echt nicht lästig sein, aber Javascript gehört definitiv nicht zu meinen Stärken. Was genau meinst du mit parsen und setzen und wie sieht das in der Praxis aus? Sorry, dass ich so dumm frage, aber mir fehlt definitiv die Experience auf diesem Gebiet.
|
atrox
in fairy dust... I trust!
|
er meint den string richtig zerlegen, damit du an der richtigen stelle dein _engl einsetzen kannst.
|
grOOvekill@
LegendVienna Badass
|
Alles klar, das ist ja genau das, was ich vorhabe. Ich kann jedoch auch auf hardcore-rtfm-selfhtml-ing nicht herausfinden, wie ich den letzten Teil beim Einlesen durch einen neuen ersetze.
|
Guest
Deleted User
|
|
grOOvekill@
LegendVienna Badass
|
Mann, ich werd noch bescheuert! Das Ding funzt einfach nicht. Hab mal diese Funktion gebastelt:
function tauschen(pfadname){ var logs = pfadname.split(/\w+/); for (i=0; i<logs.length; i++) { document.write(logs[i]); } }
im body schick ich die URL mittels
var pfadname = window.location; tauschen(pfadname); hinein.
Beim diesem Teil hier: (/\w+/) bin ich mir aber nicht so sicher. Hier muß ja das Zeichen stehen, nachdem gesplittet werden soll. Wenn ich das richtig verstanden habe, wird das Zeug dann in ein Array eingelesen.
Ich bekomme aber eine Fehlermeldung nach der anderen. Kann sie gar nicht alle aufzählen!
AARGL!
|
atrox
in fairy dust... I trust!
|
versuch: newlocation=window.location.href.replace(/\.([^.]+)$/,"_eng.$1"); das setzt vor den letzen . punkt den string _eng ein. testen im browser zb mit: javascript:alert(window.location.href.replace(/\.([^.]+)$/,"_eng.$1")) alternativ könnte man auch direkt nur location.pathname verändern. siehe http://devedge.netscape.com/library...e/location.html(wenn natürlich schon ein _eng eingesetzt ist, wird eins hinzugefügt, weshalb man es vorher entfernen müsste)
|
grOOvekill@
LegendVienna Badass
|
Okay. Hab mal folgenden Code gebastelt, der auf einfach Seiten, also ohne Frameset ohne Probleme funktioniert. Ein wenig anspeiben tu ich mich jetzt nur bei eben einem Frameset. Bei einem Klick auf Englisch müssen in meinem Fall insgesamt vier Frames geändert werden.
Hier mal der Code:
<HTML> <HEAD> <TITLE>Language Bitching</TITLE> <SCRIPT LANGUAGE="JavaScript1.2"> <!-- function Frames(URI1,F1,URI2,F2,URI3,F3,URI4,F4) { Frame1=eval("parent."+F1); Frame2=eval("parent."+F2); Frame3=eval("parent."+F3); Frame4=eval("parent."+F4); Frame1.location.href = URI1; Frame2.location.href = URI2; Frame3.location.href = URI3; Frame4.location.href = URI4; }
//Language Settings var aendern_in = "engl"; function gotoPage(sPage){ // ".html" in sPage suchen var nPosHtml = sPage.lastIndexOf('.html'); if (nPosHtml < 0) return; // invalid link (not .html) // neue URL aufbauen var sNewPage = sPage.substr(0, nPosHtml) + "_" + aendern_in + ".html"; // zur url navigieren return window.location.replace(sNewPage); } //--> </script> </HEAD>
<BODY>
<a href="javascript:Frames('1.html','f1','2.html','f2','3.html','f3',gotoPage(parent.main.location),'f4')">English</a> </BODY> </HTML>
Mein Problem ist nun, dass ich beim fetten Teil irgendwie die aktuelle URL reinbekommen, in der Funktion gotoPage ändern und dann genau dort anhand der Variable site reinbekommen müsste.
Leider wird mir nur eine undefinded Site aufgerufen. Irgendwo ist da noch ein kleiner Haken, aber ich finde ihn nicht.
Any ideas?
Bearbeitet von grOOvekill@ am 20.05.2003, 10:55
|
watchout
Legendundead
|
man, he - das steht aber echt alles lang und breit erklärt im selfhtml:
tip: DOM - nodes
|